Expression.Convert Método

Definición

Crea un objeto UnaryExpression que representa una operación de conversión de tipos.

Sobrecargas

Convert(Expression, Type)

Crea un objeto UnaryExpression que representa una operación de conversión de tipos.

Convert(Expression, Type, MethodInfo)

Crea un objeto UnaryExpression que representa la operación de conversión para la que se especifica el método de implementación.

Convert(Expression, Type)

Crea un objeto UnaryExpression que representa una operación de conversión de tipos.

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

Objeto Expression en el que se va a establecer la propiedad Operand.

type
Type

Type en el que se va a establecer la propiedad Type.

Devoluciones

UnaryExpression

UnaryExpression cuya propiedad NodeType es Convert y cuyas propiedades Operand y Type se establecen en los valores especificados.

Excepciones

expression o type es null.

No hay ningún operador de conversión definido entre expression.Type y type.

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear una expresión que representa una operación de conversión 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

Comentarios

La Method propiedad del resultante UnaryExpression se establece en el método de implementación. La propiedad IsLiftedToNull es false. Si se levanta el nodo, IsLifted es true. De lo contrario, es false.

Método de implementación

Las reglas siguientes determinan el método de implementación para la operación:

  • Si es . expression El tipo o type es un tipo definido por el usuario que define un operador de conversión implícito o explícito, que MethodInfo representa ese operador es el método de implementación.

  • De lo contrario:

    • Si ambos expression. Escriba y type represente tipos numéricos o booleanos, o tipos de enumeración que aceptan valores NULL o que no aceptan valores NULL, el método de implementación es null.

    • Si es . expression El tipo o type es un tipo de referencia y existe una conversión boxing explícita, unboxing o reference de expression. Escriba en type, el método de implementación es null.

Elevación frente a no levantada

Si el método de implementación no nulles :

  • Si expressiones . El tipo se puede asignar al tipo de argumento del método de implementación y el tipo de valor devuelto del método de implementación se puede asignar a type, el nodo no se levanta.

  • Si uno o ambos de expression. Type or type is a nullable value type and the correspondiente non-nullable value types are equal to the argument type and the return type of the implementing method respectivamente, the node is lift.

Si el método de implementación es null:

  • Si ambos expression. El tipo y type no admiten valores NULL, el nodo no se levanta.

  • De lo contrario, se levanta el nodo.

Se aplica a

Convert(Expression, Type, MethodInfo)

Crea un objeto UnaryExpression que representa la operación de conversión para la que se especifica el método de implementación.

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

Objeto Expression en el que se va a establecer la propiedad Operand.

type
Type

Type en el que se va a establecer la propiedad Type.

method
MethodInfo

MethodInfo en el que se va a establecer la propiedad Method.

Devoluciones

UnaryExpression

UnaryExpression cuya propiedad NodeType es Convert y Operand, Type y Method se establecen en los valores especificados.

Excepciones

expression o type es null.

method no es null y el método que representa devuelve void, no es static (Shared en Visual Basic) o no toma exactamente un argumento.

No hay ningún operador de conversión definido entre expression.Type y type.

o bien expression.Type no se puede asignar al tipo de argumento del método representado por method.

o bien El tipo de valor devuelto del método representado por method no se puede asignar a type.

o bien expression.Type o type es un tipo de valor que acepta valores null y el correspondiente tipo de valor que no acepta valores null no es igual que el tipo de argumento o el tipo de valor devuelto, respectivamente, del método representado por method.

Se ha encontrado más de un método que coincide con la descripción de method.

Comentarios

La Method propiedad del resultado UnaryExpression se establece en el método de implementación. La propiedad IsLiftedToNull es false. Si se levanta el nodo, IsLifted es true. De lo contrario, es false.

Método de implementación

Las reglas siguientes determinan el método de implementación para la operación:

  • Si el método no nulles , es el método de implementación. Debe representar un método que no sea void( static``Shared en Visual Basic) que tome un argumento.

  • De lo contrario, si es . expression El tipo o type es un tipo definido por el usuario que define un operador de conversión implícito o explícito, que MethodInfo representa ese operador es el método de implementación.

  • De lo contrario:

    • Si ambos expression. Escriba y type represente tipos numéricos o booleanos, o tipos de enumeración que aceptan valores NULL o que no aceptan valores NULL, el método de implementación es null.

    • Si es expression. El tipo o type es un tipo de referencia y existe una conversión explícita de conversión boxing, unboxing o referencia desde expression. Escriba en type, el método de implementación es null.

Elevación frente a no levantada

Si el método de implementación no nulles :

  • Si expressiones . El tipo se puede asignar al tipo de argumento del método de implementación y el tipo de valor devuelto del método de implementación se puede asignar a type, el nodo no se levanta.

  • Si es o ambos de expression. El tipo o type son un tipo de valor que acepta valores NULL y los tipos de valor que no aceptan valores NULL correspondientes son iguales al tipo de argumento y al tipo de valor devuelto del método de implementación, respectivamente, se levanta el nodo.

Si el método de implementación es null:

  • Si ambos expression. El tipo y type no admiten valores NULL, el nodo no se levanta.

  • De lo contrario, se levanta el nodo.

Se aplica a