Expression.Convert Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea un oggetto UnaryExpression che rappresenta un'operazione di conversione di tipo.
Overload
| Convert(Expression, Type) |
Crea un oggetto UnaryExpression che rappresenta un'operazione di conversione di tipo. |
| Convert(Expression, Type, MethodInfo) |
Crea un oggetto UnaryExpression che rappresenta un'operazione di conversione per la quale è specificato il metodo di implementazione. |
Convert(Expression, Type)
- Origine:
- UnaryExpression.cs
- Origine:
- UnaryExpression.cs
- Origine:
- UnaryExpression.cs
Crea un oggetto UnaryExpression che rappresenta un'operazione di conversione di 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
Parametri
- expression
- Expression
Oggetto Expression su cui impostare la proprietà Operand.
Restituisce
Oggetto UnaryExpression la cui proprietà NodeType è uguale a Convert e le cui proprietà Operand e Type sono impostate sui valori specificati.
Eccezioni
expression o type è null.
Nessun operatore di conversione è definito tra expression.Type e type.
Esempio
Nell'esempio di codice seguente viene illustrato come creare un'espressione che rappresenta un'operazione di conversione dei tipi.
// 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
Commenti
La Method proprietà del risultato UnaryExpression è impostata sul metodo di implementazione. La proprietà IsLiftedToNull è false. Se il nodo viene sollevato, IsLifted è true. In caso contrario, è false.
Metodo di implementazione
Le regole seguenti determinano il metodo di implementazione per l'operazione:
Se uno dei due
expression. Tipo otypeè un tipo definito dall'utente che definisce un operatore di conversione implicito o esplicito, che MethodInfo rappresenta tale operatore è il metodo di implementazione.In caso contrario:
Se entrambi
expression. Digitare etyperappresentare tipi numerici o booleani o tipi di enumerazione nullable o non nullable, il metodo di implementazione ènull.Se uno dei due
expression. Tipo otypeè un tipo di riferimento e una conversione di boxing esplicita, unboxing o riferimento esiste daexpression. Digitare intype, il metodo di implementazione ènull.
Sollevato rispetto a non sollevato
Se il metodo di implementazione non nullè :
Se
expression. Il tipo è assegnabile al tipo di argomento del metodo di implementazione e il tipo restituito del metodo di implementazione è assegnabile atype, il nodo non viene sollevato.Se una o entrambe di
expression. Il tipo otypeè un tipo valore nullable e i tipi di valore non nullable corrispondenti sono uguali al tipo di argomento e al tipo restituito del metodo di implementazione rispettivamente, il nodo viene sollevato.
Se il metodo di implementazione è null:
Se entrambi
expression. Tipo etypenon nullable, il nodo non viene sollevato.In caso contrario, il nodo viene sollevato.
Si applica a
Convert(Expression, Type, MethodInfo)
- Origine:
- UnaryExpression.cs
- Origine:
- UnaryExpression.cs
- Origine:
- UnaryExpression.cs
Crea un oggetto UnaryExpression che rappresenta un'operazione di conversione per la quale è specificato il metodo di implementazione.
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
Parametri
- expression
- Expression
Oggetto Expression su cui impostare la proprietà Operand.
- method
- MethodInfo
Oggetto MethodInfo su cui impostare la proprietà Method.
Restituisce
Oggetto UnaryExpression la cui proprietà NodeType è uguale a Convert e le cui proprietà Operand, Type e Method sono impostate sui valori specificati.
Eccezioni
expression o type è null.
method non è null e il metodo che rappresenta restituisce void, non è static (Shared in Visual Basic) o non accetta esattamente un argomento.
Nessun operatore di conversione è definito tra expression.Type e type.
-oppure-
expression.Type non è assegnabile al tipo di argomento del metodo rappresentato da method.
-oppure-
Il tipo restituito del metodo rappresentato da method non è assegnabile a type.
-oppure-
expression.Type o type è un tipo valore nullable e il tipo valore non nullable corrispondente è diverso dal tipo di argomento o dal tipo restituito, rispettivamente, del metodo rappresentato da method.
È stato trovato più di un metodo che corrisponde alla descrizione di method.
Commenti
La Method proprietà del risultato UnaryExpression è impostata sul metodo di implementazione. La proprietà IsLiftedToNull è false. Se il nodo viene sollevato, IsLifted è true. In caso contrario, è false.
Metodo di implementazione
Le regole seguenti determinano il metodo di implementazione per l'operazione:
Se il metodo non
nullè , è il metodo di implementazione. Deve rappresentare un metodo non void ,static(Sharedin Visual Basic) che accetta un argomento.In caso contrario, se entrambi
expression. Tipo otypeè un tipo definito dall'utente che definisce un operatore di conversione implicito o esplicito, che MethodInfo rappresenta tale operatore è il metodo di implementazione.In caso contrario:
Se entrambi
expression. Digitare etyperappresentare tipi numerici o booleani o tipi di enumerazione nullable o non nullable, il metodo di implementazione ènull.Se uno dei due
expression. Tipo otypeè un tipo di riferimento e una conversione di boxing esplicita, unboxing o riferimento esiste daexpression. Digitare intype, il metodo di implementazione ènull.
Sollevato rispetto a non sollevato
Se il metodo di implementazione non nullè :
Se
expression. Il tipo è assegnabile al tipo di argomento del metodo di implementazione e il tipo restituito del metodo di implementazione è assegnabile atype, il nodo non viene sollevato.Se entrambi o entrambi i tipi di
expression. Il tipo otypeè un tipo valore nullable e i tipi di valore non nullable corrispondenti sono uguali al tipo di argomento e al tipo restituito del metodo di implementazione rispettivamente, il nodo viene sollevato.
Se il metodo di implementazione è null:
Se entrambi
expression. Tipo etypenon nullable, il nodo non viene sollevato.In caso contrario, il nodo viene sollevato.