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 etype
rappresentare 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 etype
non 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
(Shared
in 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 etype
rappresentare 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 etype
non nullable, il nodo non viene sollevato.In caso contrario, il nodo viene sollevato.