Expression.Convert Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
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 outype
é 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
expression
forem . Digite etype
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 outype
é um tipo de referência e existe uma conversão explícita de conversão boxing, unboxing ou reference deexpression
. Digite paratype
, 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 null
for :
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 atype
, o nó não é levantado.Se um ou ambos de
expression
. Tipo outype
é 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
forem . Digite etype
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.
- 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
null
for , 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 outype
é 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
expression
forem . Digite etype
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 outype
é um tipo de referência e existe uma conversão explícita de conversão boxing, unboxing ou reference deexpression
. Digite paratype
, 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 null
for :
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 atype
, o nó não é levantado.Se ou ambos de
expression
. Digite outype
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
forem . Digite etype
não permite valor nulo, o nó não é levantado.Caso contrário, o nó será levantado.