Expression.Convert Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Tworzy obiekt UnaryExpression reprezentujący operację konwersji typu.
Przeciążenia
| Convert(Expression, Type) |
Tworzy obiekt UnaryExpression reprezentujący operację konwersji typu. |
| Convert(Expression, Type, MethodInfo) |
Tworzy obiekt UnaryExpression reprezentujący operację konwersji, dla której określono metodę implementującą. |
Convert(Expression, Type)
- Źródło:
- UnaryExpression.cs
- Źródło:
- UnaryExpression.cs
- Źródło:
- UnaryExpression.cs
Tworzy obiekt UnaryExpression reprezentujący operację konwersji 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
Element , Expression aby ustawić właściwość równą Operand .
Zwraca
WłaściwośćUnaryExpression, która ma właściwość równą ConvertNodeType właściwości i i TypeOperand ustawioną na określone wartości.
Wyjątki
expression lub type to null.
Nie zdefiniowano operatora konwersji między elementami expression. Wpisz i type.
Przykłady
W poniższym przykładzie kodu pokazano, jak utworzyć wyrażenie reprezentujące operację konwersji 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
Uwagi
Właściwość Method wynikowej UnaryExpression jest ustawiona na metodę implementowania. Właściwość IsLiftedToNull to false. Jeśli węzeł zostanie zniesiony, IsLifted to .true W przeciwnym razie jest falseto .
Metoda implementująca
Następujące reguły określają metodę implementowania operacji:
Jeśli albo
expression. Typ lubtypejest typem zdefiniowanym przez użytkownika, który definiuje niejawny lub jawny operator konwersji, MethodInfo który reprezentuje ten operator jest metodą implementowania.W przeciwnym razie:
Jeśli oba
expression. Wpisz itypereprezentuje typy liczbowe lub logiczne albo typy wyliczalne o wartości null lub niezwiązane z wartością null, metoda implementowania tonull.Jeśli albo
expression. Typ lubtypejest typem referencyjnym, a jawne boxing, rozpakowywanie lub konwersja odwołania istnieje zexpressionklasy . Wpisz wartośćtype, metoda implementowania tonull.
Podniesione i niepodniesione
Jeśli metoda implementowania nie nulljest :
Jeśli
expression. Typ jest przypisywany do typu argumentu metody implementowania, a zwracany typ metody implementowania można przypisać dotypeelementu , węzeł nie zostanie zniesiony.Jeśli jeden lub oba z nich
expression. Typ lubtypejest typem wartości dopuszczanej do wartości null, a odpowiadające im typy wartości nienależących do wartości są równe typowi argumentu, a zwracany typ metody implementowania, węzeł zostanie zniesiony.
Jeśli metoda implementowania to null:
Jeśli oba
expression. Wpisz itypenie ma wartości null, węzeł nie zostanie zniesiony.W przeciwnym razie węzeł zostanie zniesiony.
Dotyczy
Convert(Expression, Type, MethodInfo)
- Źródło:
- UnaryExpression.cs
- Źródło:
- UnaryExpression.cs
- Źródło:
- UnaryExpression.cs
Tworzy obiekt UnaryExpression reprezentujący operację konwersji, dla której określono metodę implementującą.
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
Element , Expression aby ustawić właściwość równą Operand .
- method
- MethodInfo
A MethodInfo , aby ustawić właściwość równą Method .
Zwraca
WłaściwośćUnaryExpression, która ma właściwość równą ConvertNodeType wartościom , i OperandType, i Method ustawioną na określone wartości.
Wyjątki
expression lub type to null.
method nie null jest i metoda, która reprezentuje zwraca voidwartość , nie static jest (Shared w Visual Basic) lub nie bierze dokładnie jednego argumentu.
Nie zdefiniowano operatora konwersji między elementami expression. Wpisz i type.
-lub-
expression. Typ nie można przypisać do typu argumentu metody reprezentowanej przez .method
-lub-
Zwracany typ metody reprezentowanej przez method program nie można przypisać do typeelementu .
-lub-
expression. Typ lub type jest typem wartości dopuszczalnej wartości null, a odpowiadający mu typ wartości bez wartości null nie jest równy typowi argumentu ani typowi zwracanemu, odpowiednio, metody reprezentowanej przez methodmetodę .
Znaleziono więcej niż jedną metodę zgodną z opisem method .
Uwagi
Właściwość Method wynikowej UnaryExpression jest ustawiona na metodę implementowania. Właściwość IsLiftedToNull to false. Jeśli węzeł zostanie zniesiony, IsLifted to .true W przeciwnym razie jest falseto .
Metoda implementująca
Następujące reguły określają metodę implementowania operacji:
Jeśli metoda nie
nulljest , jest to metoda implementowania. Musi reprezentować metodę niepustą (staticSharedw Visual Basic), która przyjmuje jeden argument.W przeciwnym razie, jeśli albo
expression. Typ lubtypejest typem zdefiniowanym przez użytkownika, który definiuje niejawny lub jawny operator konwersji, MethodInfo który reprezentuje ten operator jest metodą implementowania.W przeciwnym razie:
Jeśli oba
expression. Wpisz itypereprezentuje typy liczbowe lub logiczne albo typy wyliczalne o wartości null lub niezwiązane z wartością null, metoda implementowania tonull.Jeśli albo
expression. Typ lubtypejest typem referencyjnym, a jawne boxing, rozpakowywanie lub konwersja odwołania istnieje zexpressionklasy . Wpisz wartośćtype, metoda implementowania tonull.
Podniesione i niepodniesione
Jeśli metoda implementowania nie nulljest :
Jeśli
expression. Typ jest przypisywany do typu argumentu metody implementowania, a zwracany typ metody implementowania można przypisać dotypeelementu , węzeł nie zostanie zniesiony.Jeśli jeden lub oba z .
expressionTyp lubtypeto typ wartości dopuszczający wartość null, a odpowiadające im typy wartości niepustych są równe typowi argumentu i zwracanym typowi metody implementowania, węzeł zostanie zniesiony.
Jeśli metoda implementowania to null:
Jeśli oba
expression. Wpisz itypenie ma wartości null, węzeł nie zostanie zniesiony.W przeciwnym razie węzeł zostanie zniesiony.