Expression.Convert Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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)
- Source:
- UnaryExpression.cs
- Source:
- UnaryExpression.cs
- Source:
- UnaryExpression.cs
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.
Devoluciones
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 .
expressionEl tipo otypees 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 ytyperepresente 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 esnull.Si es .
expressionEl tipo otypees un tipo de referencia y existe una conversión boxing explícita, unboxing o reference deexpression. Escriba entype, el método de implementación esnull.
Levantada frente a no levantada
Si el método de implementación no nulles :
Si
expression. 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 atype, el nodo no se levanta.Si uno o ambos de
expression. El tipo otypees 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 el 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 ytypeno aceptan valores NULL, el nodo no se levanta.De lo contrario, se levanta el nodo.
Se aplica a
Convert(Expression, Type, MethodInfo)
- Source:
- UnaryExpression.cs
- Source:
- UnaryExpression.cs
- Source:
- UnaryExpression.cs
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.
- method
- MethodInfo
MethodInfo en el que se va a establecer la propiedad Method.
Devoluciones
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 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 el método no
nulles , es el método de implementación. Debe representar un método que no sea void,static(Shareden Visual Basic) que tome un argumento.De lo contrario, si es .
expressionEl tipo otypees 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 ytyperepresente 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 esnull.Si es .
expressionEl tipo otypees un tipo de referencia y existe una conversión boxing explícita, unboxing o reference deexpression. Escriba entype, el método de implementación esnull.
Levantada frente a no levantada
Si el método de implementación no nulles :
Si
expression. 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 atype, el nodo no se levanta.Si o ambos de
expression. El tipo otypeson 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 el 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 ytypeno aceptan valores NULL, el nodo no se levanta.De lo contrario, se levanta el nodo.