Expression.Convert Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.
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 false
to .
Implementace metody
Následující pravidla určují metodu implementace operace:
Pokud je některý z těchto možností
expression
. Typ nebotype
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 atype
představuje číselné nebo logické typy nebo typy výčtu s možnou hodnotou null nebo nenulovou, implementační metoda jenull
.Pokud je některý z těchto možností
expression
. Zadejte nebotype
je typ odkazu a existuje explicitní boxing, unboxing nebo převod odkazu zexpression
. Zadejte dotype
, implementovaná metoda jenull
.
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 ktype
, uzel není zvednut.Pokud jeden nebo oba z .
expression
Typ nebotype
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 null
implementovaná metoda :
Pokud jsou oba
expression
. Zadejte atype
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.
- 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 false
to .
Implementace metody
Následující pravidla určují metodu implementace operace:
Pokud metoda není
null
, je to implementovaná metoda. Musí představovat metodu bezstatic
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 nebotype
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 atype
představuje číselné nebo logické typy nebo typy výčtu s možnou hodnotou null nebo nenulovou, implementační metoda jenull
.Pokud je některý z těchto možností
expression
. Zadejte nebotype
je typ odkazu a existuje explicitní boxing, unboxing nebo převod odkazu zexpression
. Zadejte dotype
, implementovaná metoda jenull
.
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 ktype
, uzel není zvednut.Pokud jeden nebo oba z
expression
. Typ nebotype
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 null
implementovaná metoda :
Pokud jsou oba
expression
. Zadejte atype
nemají hodnotu null, uzel není zvednut.V opačném případě se uzel zruší.