Partilhar via


Expression.Convert Método

Definição

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

Sobrecargas

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

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

Um Expression para definir a propriedade Operand igual a ele.

type
Type

Um Type para definir a propriedade Type igual a ele.

Retornos

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

Exceções

expression ou type é null.

Não há nenhum operador de conversão definido entre expression.Type e type.

Exemplos

O exemplo de código a seguir mostra como criar uma expressão que representa uma operação de conversão de tipo.

// 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

Comentários

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

Implementando método

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

  • Se um dos dois expression. Digite ou type é um tipo definido pelo usuário que define um operador de conversão implícita ou explícita, o MethodInfo que representa esse operador é o método de implementação.

  • Caso contrário:

    • Se ambos expressionforem . Digite e type represente tipos numéricos ou boolianos, ou tipos de enumeração anuláveis ou não anuláveis, o método de implementação é null.

    • Se um dos dois expression. Digite ou type é um tipo de referência e existe uma conversão explícita de conversão boxing, unboxing ou reference de expression. Digite para type, o método de implementação é null.

Com comparação de precisão x sem comparação de precisão

Se o método de implementação não nullfor :

  • 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 é levantado.

  • Se um ou ambos de expression. Tipo ou type é um tipo de valor anulável e os tipos de valor não anuláveis correspondentes são iguais ao tipo de argumento e ao tipo de retorno do método de implementação, respectivamente, o nó é levantado.

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

  • Se ambos expressionforem . Digite e type não permite valor nulo, o nó não é levantado.

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

Aplica-se a

Convert(Expression, Type, MethodInfo)

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

Um Expression para definir a propriedade Operand igual a ele.

type
Type

Um Type para definir a propriedade Type igual a ele.

method
MethodInfo

Um MethodInfo para definir a propriedade Method igual a ele.

Retornos

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

Exceções

expression ou type é null.

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

Não há nenhum operador de conversão definido entre expression.Type e type.

- ou -

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

- ou -

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

- ou -

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

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

Comentários

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

Implementando método

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

  • Se o método não nullfor , será o método de implementação. Ele deve representar um método não nulo, static (Shared no Visual Basic) que usa um argumento.

  • Caso contrário, se for . expression Digite ou type é um tipo definido pelo usuário que define um operador de conversão implícita ou explícita, o MethodInfo que representa esse operador é o método de implementação.

  • Caso contrário:

    • Se ambos expressionforem . Digite e type represente tipos numéricos ou boolianos, ou tipos de enumeração anuláveis ou não anuláveis, o método de implementação é null.

    • Se um dos dois expression. Digite ou type é um tipo de referência e existe uma conversão explícita de conversão boxing, unboxing ou reference de expression. Digite para type, o método de implementação é null.

Com comparação de precisão x sem comparação de precisão

Se o método de implementação não nullfor :

  • 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 é levantado.

  • Se ou ambos de expression. Digite ou type seja um tipo de valor anulável e os tipos de valor não anuláveis correspondentes são iguais ao tipo de argumento e ao tipo de retorno do método de implementação, respectivamente, o nó é levantado.

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

  • Se ambos expressionforem . Digite e type não permite valor nulo, o nó não é levantado.

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

Aplica-se a