Sdílet prostřednictvím


Expression.Convert Metoda

Definice

Vytvoří operaci UnaryExpression převodu typu.

Přetížení

Name Description
Convert(Expression, Type)

Vytvoří operaci UnaryExpression převodu typu.

Convert(Expression, Type, MethodInfo)

Vytvoří UnaryExpression operaci převodu, pro kterou je zadaná implementovaná metoda.

Convert(Expression, Type)

Zdroj:
UnaryExpression.cs
Zdroj:
UnaryExpression.cs
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

Operand Nastavení Expression vlastnosti rovno.

type
Type

A Type nastavit Type vlastnost rovná se.

Návraty

AUnaryExpression, který má vlastnost rovna ConvertNodeType a Operand a Type vlastnosti nastaveny na zadané hodnoty.

Výjimky

expression nebo type je null.

Mezi operátorem expressionpřevodu není definován žádný operátor převodu . 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 zvednut, IsLifted je true. Jinak je falseto .

Implementace metody

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

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

  • Jinak:

    • Pokud jsou oba expression. Typ a type reprezentovat číselné nebo logické typy, nebo nullable nebo non-nullable výčtové typy, implementační metoda je null.

    • Pokud je to některý z těchto expression. Typ nebo type je typ odkazu a explicitní boxing, rozbalení nebo převod odkazu existuje z expression. Typ do type, implementovaná metoda je null.

Lifted versus Non-Lifted

Pokud implementovaná metoda není null:

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

  • Je-li jeden nebo oba z expressionnich . Typ nebo type je typ hodnoty null a odpovídající typy hodnot, které nejsou nullable jsou rovny typu argumentu a návratový typ implementované metody, uzel se zvedne.

Pokud implementovaná metoda je null:

  • Pokud jsou oba expression. Typ a type nejsou nullable, uzel se nezruší.

  • Jinak se uzel zvedne.

Platí pro

Convert(Expression, Type, MethodInfo)

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

Vytvoří UnaryExpression operaci převodu, pro kterou je zadaná implementovaná metoda.

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

Operand Nastavení Expression vlastnosti rovno.

type
Type

A Type nastavit Type vlastnost rovná se.

method
MethodInfo

A MethodInfo nastavit Method vlastnost rovná se.

Návraty

AUnaryExpression, který má vlastnost rovna ConvertNodeTypeOperanda , Typea Method vlastnosti nastaveny na zadané hodnoty.

Výjimky

expression nebo type je null.

method není null a metoda, která představuje vrací void, není static (Shared v jazyce Visual Basic) nebo nebere přesně jeden argument.

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

nebo

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

nebo

Návratový typ metody reprezentované method není možné typepřiřadit .

nebo

expression. Typ nebo type je typ hodnoty s možnou hodnotou null a odpovídající typ nenulové hodnoty se nerovná typu argumentu nebo návratového typu metody reprezentované metodou 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 zvednut, IsLifted je true. Jinak je falseto .

Implementace metody

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

  • Pokud metoda není null, je to implementovaná metoda. Musí představovat jinou metodu než void ( staticShared v jazyce Visual Basic), která přebírá jeden argument.

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

  • Jinak:

    • Pokud jsou oba expression. Typ a type reprezentovat číselné nebo logické typy, nebo nullable nebo non-nullable výčtové typy, implementační metoda je null.

    • Pokud je to některý z těchto expression. Typ nebo type je typ odkazu a explicitní boxing, rozbalení nebo převod odkazu existuje z expression. Typ do type, implementovaná metoda je null.

Lifted versus Non-Lifted

Pokud implementovaná metoda není null:

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

  • Je-li jeden nebo oba z expression. Typ nebo type jsou typ hodnoty nullable a odpovídající typy hodnot, které nejsou nullable jsou rovny typu argumentu a návratový typ implementované metody, uzel je zvednut.

Pokud implementovaná metoda je null:

  • Pokud jsou oba expression. Typ a type nejsou nullable, uzel se nezruší.

  • Jinak se uzel zvedne.

Platí pro