Compartilhar via


Expression.Convert Método

Definição

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

Sobrecargas

Nome 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

Um Expression para definir a Operand propriedade igual a.

type
Type

A Type para definir a Type propriedade igual a.

Retornos

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

Exceções

expression ou type é null.

Nenhum operador de conversão é definido entre expression. Digite 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 resultado 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 regras a seguir determinam o método de implementação para a operação:

  • Se for. expression Digite ou type seja um tipo definido pelo usuário 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. 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 for. expression Digite ou type seja um tipo de referência e exista um boxing explícito, unboxing ou conversão de expressionreferência. Digite para type, o método de implementação é null.

Lifted versus Non-Lifted

Se o método de implementaçã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, typeo nó não é levantado.

  • Se um ou ambos. 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 o tipo de retorno do método de implementação, respectivamente, o nó é levantado.

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

  • Se ambos expression. Digite e type não seja anulável, 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
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 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.

Retornos

Um UnaryExpression que tem a NodeType propriedade igual e Convert a Operand, Typee Method propriedades definidas para 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 usa exatamente um argumento.

Nenhum operador de conversão é definido entre expression. Digite 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. Digite ou type seja um tipo de valor anulável e o tipo de valor não anulável correspondente não seja igual ao tipo de argumento ou ao tipo de retorno, respectivamente, do método representado por method.

Mais de um método que corresponde à method descrição foi encontrado.

Comentários

A Method propriedade do resultado 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 regras a seguir 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( staticShared no Visual Basic) que usa um argumento.

  • Caso contrário, se for. expression Digite ou type seja um tipo definido pelo usuário 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. 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 for. expression Digite ou type seja um tipo de referência e exista um boxing explícito, unboxing ou conversão de expressionreferência. Digite para type, o método de implementação é null.

Lifted versus Non-Lifted

Se o método de implementaçã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, typeo nó não é levantado.

  • Se for um ou ambos. 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 expression. Digite e type não seja anulável, o nó não é levantado.

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

Aplica-se a