Expression.Convert Método

Definição

Cria um UnaryExpression que representa uma operação de conversão de tipo.

Sobrecargas

Name Description
Convert(Expression, Type)

Cria um UnaryExpression que representa uma operação de conversão de tipo.

Convert(Expression, Type, MethodInfo)

Cria um UnaryExpression que representa uma operação de conversão para a qual o método de implementação é especificado.

Convert(Expression, Type)

Origem:
UnaryExpression.cs
Origem:
UnaryExpression.cs
Origem:
UnaryExpression.cs
Origem:
UnaryExpression.cs
Origem:
UnaryExpression.cs

Cria um UnaryExpression que representa uma operação de conversão de tipo.

public:
 static System::Linq::Expressions::UnaryExpression ^ Convert(System::Linq::Expressions::Expression ^ expression, Type ^ type);
public static System.Linq.Expressions.UnaryExpression Convert(System.Linq.Expressions.Expression expression, Type type);
static member Convert : System.Linq.Expressions.Expression * Type -> System.Linq.Expressions.UnaryExpression
Public Shared Function Convert (expression As Expression, type As Type) As UnaryExpression

Parâmetros

expression
Expression

E Expression para definir a Operand propriedade igual a .

type
Type

A Type para definir a Type propriedade igual a .

Devoluções

A UnaryExpression que tem a NodeType propriedade igual a Convert e as Operand propriedades e Type definidas com os valores especificados.

Exceções

expression ou type é null.

Nenhum operador de conversão é definido entre expression. Tipo e type.

Exemplos

O exemplo de código seguinte mostra como criar uma expressão que representa uma operação de conversão de tipos.

// Add the following directive to your file:
// using System.Linq.Expressions;

// This expression represents a type conversion operation.
Expression convertExpr = Expression.Convert(
                            Expression.Constant(5.5),
                            typeof(Int16)
                        );

// Print out the expression.
Console.WriteLine(convertExpr.ToString());

// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda<Func<Int16>>(convertExpr).Compile()());

// This code example produces the following output:
//
// Convert(5.5)
// 5
' Add the following directive to your file:
' Imports System.Linq.Expressions 

' This expression represents a type conversion operation.        
Dim convertExpr As Expression = Expression.Convert(
                            Expression.Constant(5.5),
                            GetType(Int16)
                        )

' Print the expression.
Console.WriteLine(convertExpr.ToString())

' The following statement first creates an expression tree,
' then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda(Of Func(Of Int16))(convertExpr).Compile()())

' This code example produces the following output:
'
' Convert(5.5)
' 5

Observações

A Method propriedade do resultado UnaryExpression é definida para o método de implementação. A propriedade IsLiftedToNull é false. Se o nó for elevado, IsLifted é true. Caso contrário, é false.

Método de Implementação

As seguintes regras determinam o método de implementação da operação:

  • Se algum deles expression. Tipo ou type é um tipo definido pelo utilizador que define um operador de conversão implícito ou explícito, o MethodInfo que representa esse operador é o método de implementação.

  • Caso contrário:

    • Se ambos expression. Tipar e type representar tipos numéricos ou booleanos, ou tipos de enumeração nulos ou não anuláveis, o método de implementação é null.

    • Se algum deles expression. Tipo ou type é um tipo de referência e existe uma conversão explícita de boxing, unboxing ou referência a partir de expression. Tipem para type, o método de implementação é null.

Levantado versus Não Levantado

Se o método de execução não for null:

  • Se expression. O tipo é atribuível ao tipo de argumento do método de implementação e o tipo de retorno do método de implementação é atribuível a type, o nó não é elevado.

  • Se um ou ambos os expression. Tipo ou type é um tipo de valor nulo e os tipos correspondentes de valor não nulo são iguais ao tipo de argumento e ao tipo de retorno do método implementador, respetivamente, o nó é elevado.

Se o método de execução for null:

  • Se ambos expression. Tipo e type são não anuláveis, o nó não é elevado.

  • Caso contrário, o nó é levantado.

Aplica-se a

Convert(Expression, Type, MethodInfo)

Origem:
UnaryExpression.cs
Origem:
UnaryExpression.cs
Origem:
UnaryExpression.cs
Origem:
UnaryExpression.cs
Origem:
UnaryExpression.cs

Cria um UnaryExpression que representa uma operação de conversão para a qual o método de implementação é especificado.

public:
 static System::Linq::Expressions::UnaryExpression ^ Convert(System::Linq::Expressions::Expression ^ expression, Type ^ type, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.UnaryExpression Convert(System.Linq.Expressions.Expression expression, Type type, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.UnaryExpression Convert(System.Linq.Expressions.Expression expression, Type type, System.Reflection.MethodInfo? method);
static member Convert : System.Linq.Expressions.Expression * Type * System.Reflection.MethodInfo -> System.Linq.Expressions.UnaryExpression
Public Shared Function Convert (expression As Expression, type As Type, method As MethodInfo) As UnaryExpression

Parâmetros

expression
Expression

E Expression para definir a Operand propriedade igual a .

type
Type

A Type para definir a Type propriedade igual a .

method
MethodInfo

A MethodInfo para definir a Method propriedade igual a .

Devoluções

A UnaryExpression que tem a NodeType propriedade igual a Convert e o Operand, Type, e Method propriedades definidas com os valores especificados.

Exceções

expression ou type é null.

method não é null e o método que representa retorna void, não é static (Shared em Visual Basic), ou não toma exatamente um argumento.

Nenhum operador de conversão é definido entre expression. Tipo e type.

-ou-

expression. O tipo não é atribuível ao tipo de argumento do método representado por method.

-ou-

O tipo de retorno do método representado por method não é atribuível a type.

-ou-

expression. Tipo ou type é um tipo de valor nulo e o tipo correspondente de valor não nulo não é igual ao tipo de argumento ou ao tipo de retorno, respetivamente, do método representado por method.

Foi encontrado mais do que um método que corresponde à method descrição.

Observações

A Method propriedade do resultado UnaryExpression é definida para o método de implementação. A propriedade IsLiftedToNull é false. Se o nó for elevado, IsLifted é true. Caso contrário, é false.

Método de Implementação

As seguintes regras determinam o método de implementação da operação:

  • Se o método não nullfor , é o método implementador. Deve representar um método não nulo, static (Shared em Visual Basic) que requer um argumento.

  • Caso contrário, se qualquer um expressiondos . Tipo ou type é um tipo definido pelo utilizador que define um operador de conversão implícito ou explícito, o MethodInfo que representa esse operador é o método de implementação.

  • Caso contrário:

    • Se ambos expression. Tipar e type representar tipos numéricos ou booleanos, ou tipos de enumeração nulos ou não anuláveis, o método de implementação é null.

    • Se algum deles expression. Tipo ou type é um tipo de referência e existe uma conversão explícita de boxing, unboxing ou referência a partir de expression. Tipem para type, o método de implementação é null.

Levantado versus Não Levantado

Se o método de execução não for null:

  • Se expression. O tipo é atribuível ao tipo de argumento do método de implementação e o tipo de retorno do método de implementação é atribuível a type, o nó não é elevado.

  • Se um ou ambos . expression Tipo ou type são um tipo de valor nulo e os tipos correspondentes de valor não anulável são iguais ao tipo de argumento e ao tipo de retorno do método implementador, respetivamente, o nó é elevado.

Se o método de execução for null:

  • Se ambos expression. Tipo e type são não anuláveis, o nó não é elevado.

  • Caso contrário, o nó é levantado.

Aplica-se a