Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Expression.Convert (Expression, Type)

 

Data di pubblicazione: ottobre 2016

Crea un oggetto UnaryExpression che rappresenta un'operazione di conversione di tipo.

Spazio dei nomi:   System.Linq.Expressions
Assembly:  System.Core (in System.Core.dll)

public static UnaryExpression Convert(
	Expression expression,
	Type type
)

Parametri

expression
Type: System.Linq.Expressions.Expression

Oggetto Expression su cui impostare la proprietà Operand.

type
Type: System.Type

Oggetto Type su cui impostare la proprietà Type.

Valore restituito

Type: System.Linq.Expressions.UnaryExpression

Oggetto UnaryExpression la cui proprietà NodeType è uguale a Convert e le cui proprietà Operand e Type sono impostate sui valori specificati.

Exception Condition
ArgumentNullException

expression o type è null.

InvalidOperationException

Non viene definito alcun operatore di conversione tra expression. Tipo e type.

Il Method proprietà dell'oggetto risultante UnaryExpression è impostato per il metodo di implementazione. La proprietà IsLiftedToNull è false. Se il nodo è elevato, IsLifted è true. Altrimenti, è false.

Le regole seguenti determinano il metodo di implementazione per l'operazione:

  • Se il valore expression. Tipo o type è un tipo definito dall'utente che definisce un operatore di conversione implicita o esplicita, il MethodInfo che rappresenta l'operatore è il metodo di implementazione.

  • In caso contrario:

    • Se entrambi expression. Tipo e type rappresentano i tipi numerici o booleani o tipi di enumerazione che ammette valori null o non nullable, il metodo di implementazione è null.

    • Se il valore expression. Tipo o type è un tipo di riferimento e il boxing esplicito unboxing o conversione di un riferimento esiste da expression. Tipo di type, il metodo di implementazione è null.

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 al type, il nodo non è elevato.

  • Se uno o entrambi di expression. Tipo o type è un tipo di valore nullable e tipi di valore non nullable corrispondenti sono uguali per il tipo di argomento e il tipo restituito del metodo di implementazione, rispettivamente, il nodo è elevato.

Se il metodo di implementazione è null:

  • Se entrambi expression. Tipo e type sono non nullable, il nodo non è elevato.

  • In caso contrario, il nodo è elevato.

Esempio di codice seguente viene illustrato come creare un'espressione che rappresenta un'operazione di conversione del tipo.

// Add the following directive to your file:
// using System.Linq.Expressions;  

// This expression represents a type convertion 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

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: