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í
| 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.
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 nebotypeje 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 atypereprezentovat číselné nebo logické typy, nebo nullable nebo non-nullable výčtové typy, implementační metoda jenull.Pokud je to některý z těchto
expression. Typ nebotypeje typ odkazu a explicitní boxing, rozbalení nebo převod odkazu existuje zexpression. Typ dotype, implementovaná metoda jenull.
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 nebotypeje 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 atypenejsou 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.
- 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 (staticSharedv jazyce Visual Basic), která přebírá jeden argument.V opačném případě, pokud některý z těchto
expression. Typ nebotypeje 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 atypereprezentovat číselné nebo logické typy, nebo nullable nebo non-nullable výčtové typy, implementační metoda jenull.Pokud je to některý z těchto
expression. Typ nebotypeje typ odkazu a explicitní boxing, rozbalení nebo převod odkazu existuje zexpression. Typ dotype, implementovaná metoda jenull.
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 nebotypejsou 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 atypenejsou nullable, uzel se nezruší.Jinak se uzel zvedne.