Condividi tramite


Expression.Convert Metodo

Definizione

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.

type
Type

Oggetto Type su cui impostare la proprietà Type.

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 o type è 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 e type rappresentare tipi numerici o booleani o tipi di enumerazione nullable o non nullable, il metodo di implementazione è null.

    • Se uno dei due expression. Tipo o type è un tipo di riferimento e una conversione di boxing esplicita, unboxing o riferimento esiste da expression. Digitare in type, 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 a type, il nodo non viene sollevato.

  • Se una o entrambe di expression. Il tipo o type è 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 e type 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.

type
Type

Oggetto Type su cui impostare la proprietà Type.

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 o type è 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 e type rappresentare tipi numerici o booleani o tipi di enumerazione nullable o non nullable, il metodo di implementazione è null.

    • Se uno dei due expression. Tipo o type è un tipo di riferimento e una conversione di boxing esplicita, unboxing o riferimento esiste da expression. Digitare in type, 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 a type, il nodo non viene sollevato.

  • Se entrambi o entrambi i tipi di expression. Il tipo o type è 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 e type non nullable, il nodo non viene sollevato.

  • In caso contrario, il nodo viene sollevato.

Si applica a