Sdílet prostřednictvím


Expression.Convert Metoda

Definice

Vytvoří operaci UnaryExpression převodu typu.

Přetížení

Convert(Expression, Type)

Vytvoří operaci UnaryExpression převodu typu.

Convert(Expression, Type, MethodInfo)

Vytvoří UnaryExpression operaci převodu, pro kterou je určena metoda implementace.

Convert(Expression, Type)

Zdroj:
UnaryExpression.cs
Zdroj:
UnaryExpression.cs
Zdroj:
UnaryExpression.cs

Vytvoří operaci UnaryExpression převodu typu.

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

Parametry

expression
Expression

An Expression , která nastaví Operand vlastnost na hodnotu rovna.

type
Type

A Type , aby se vlastnost nastavil Type na hodnotu rovna.

Návraty

Vlastnost UnaryExpression a, která má NodeType vlastnost rovna Convert a Operand vlastnosti a Type nastavené na zadané hodnoty.

Výjimky

expression nebo type je null.

Mezi operátorem není definován žádný operátor převodu. expression Zadejte a type.

Příklady

Následující příklad kódu ukazuje, jak vytvořit výraz, který představuje operaci převodu typu.

// 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

Poznámky

Vlastnost Method výsledné UnaryExpression je nastavena na implementovací metodu. Vlastnost IsLiftedToNull je false. Pokud je uzel zrušen, IsLifted je true. V opačném případě je falseto .

Implementace metody

Následující pravidla určují metodu implementace operace:

  • Pokud je některý z těchto možností expression. Typ nebo type je uživatelem definovaný typ, který definuje implicitní nebo explicitní převodní operátor, MethodInfo který představuje tento operátor je implementovaná metoda.

  • V opačném případě:

    • Pokud jsou oba expression. Typ a type představuje číselné nebo logické typy nebo typy výčtu s možnou hodnotou null nebo nenulovou, implementační metoda je null.

    • Pokud je některý z těchto možností expression. Zadejte nebo type je typ odkazu a existuje explicitní boxing, unboxing nebo převod odkazu z expression. Zadejte do type, implementovaná metoda je null.

Zrušeno vs. nezrušeno

Pokud implementovaná metoda není null:

  • Pokud expression. Typ je možné přiřadit k typu argumentu implementační metody a návratový typ implementační metody je možné přiřadit k type, uzel není zvednut.

  • Pokud jeden nebo oba z . expression Typ nebo type je typ hodnoty s možnou hodnotou null a odpovídající typy hodnot, které nemají hodnotu null, jsou rovny typu argumentu a návratový typ implementační metody, v uvedeném pořadí, uzel je zvednut.

Pokud je nullimplementovaná metoda :

  • Pokud jsou oba expression. Zadejte a type nemají hodnotu null, uzel není zvednut.

  • V opačném případě se uzel zruší.

Platí pro

Convert(Expression, Type, MethodInfo)

Zdroj:
UnaryExpression.cs
Zdroj:
UnaryExpression.cs
Zdroj:
UnaryExpression.cs

Vytvoří UnaryExpression operaci převodu, pro kterou je určena metoda implementace.

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

Parametry

expression
Expression

An Expression , která nastaví Operand vlastnost na hodnotu rovna.

type
Type

A Type , aby se vlastnost nastavil Type na hodnotu rovna.

method
MethodInfo

A MethodInfo , aby se vlastnost nastavil Method na hodnotu rovna.

Návraty

Vlastnost UnaryExpression , která má NodeType vlastnost rovna Convert a Operandvlastnosti , Typea Method nastavené na zadané hodnoty.

Výjimky

expression nebo type je null.

method není null a metoda, která představuje, vrátí void, není static (Shared v jazyce Visual Basic) nebo nepřebírají přesně jeden argument.

Mezi operátorem není definován žádný operátor převodu. expression Zadejte a type.

-nebo-

expression. Typ nelze přiřadit k typu argumentu metody reprezentované parametrem method.

-nebo-

Návratový typ metody reprezentované parametrem method není možné přiřadit k type.

-nebo-

expression. Typ nebo type je typ hodnoty s možnou hodnotou null a odpovídající typ hodnoty, který nelze použít k hodnotě null, se nerovná typu argumentu nebo návratového typu metody reprezentované hodnotou method.

Byla nalezena více než jedna metoda, která odpovídá method popisu.

Poznámky

Vlastnost Method výsledné UnaryExpression je nastavena na implementovací metodu. Vlastnost IsLiftedToNull je false. Pokud je uzel zrušen, IsLifted je true. V opačném případě je falseto .

Implementace metody

Následující pravidla určují metodu implementace operace:

  • Pokud metoda není null, je to implementovaná metoda. Musí představovat metodu bez static void (Shared v jazyce Visual Basic), která přijímá jeden argument.

  • V opačném případě platí, že pokud je některý z těchto možností expression. Typ nebo type je uživatelem definovaný typ, který definuje implicitní nebo explicitní převodní operátor, MethodInfo který představuje tento operátor je implementovaná metoda.

  • V opačném případě:

    • Pokud jsou oba expression. Typ a type představuje číselné nebo logické typy nebo typy výčtu s možnou hodnotou null nebo nenulovou, implementační metoda je null.

    • Pokud je některý z těchto možností expression. Zadejte nebo type je typ odkazu a existuje explicitní boxing, unboxing nebo převod odkazu z expression. Zadejte do type, implementovaná metoda je null.

Zrušeno vs. nezrušeno

Pokud implementovaná metoda není null:

  • Pokud expression. Typ je možné přiřadit k typu argumentu implementační metody a návratový typ implementační metody je možné přiřadit k type, uzel není zvednut.

  • Pokud jeden nebo oba z expression. Typ nebo type jsou typu hodnoty s možnou hodnotou null a odpovídající typy hodnot, které nemají hodnotu null, se rovnají typu argumentu a návratový typ implementační metody, v uvedeném pořadí, uzel je zvednut.

Pokud je nullimplementovaná metoda :

  • Pokud jsou oba expression. Zadejte a type nemají hodnotu null, uzel není zvednut.

  • V opačném případě se uzel zruší.

Platí pro