Expression.Convert Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellt ein UnaryExpression, das einen Typkonvertierungsvorgang darstellt.
Überlädt
Convert(Expression, Type) |
Erstellt ein UnaryExpression, das einen Typkonvertierungsvorgang darstellt. |
Convert(Expression, Type, MethodInfo) |
Erstellt eine UnaryExpression, die eine Konvertierungsoperation darstellt, für die die implementierende Methode angegeben ist. |
Convert(Expression, Type)
- Quelle:
- UnaryExpression.cs
- Quelle:
- UnaryExpression.cs
- Quelle:
- UnaryExpression.cs
Erstellt ein UnaryExpression, das einen Typkonvertierungsvorgang darstellt.
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
Parameter
- expression
- Expression
Ein Expression, auf den die Operand-Eigenschaft festgelegt werden soll.
Gibt zurück
Ein UnaryExpression, bei dem die NodeType-Eigenschaft gleich Convert ist und die Operand-Eigenschaft sowie die Type-Eigenschaft auf die angegebenen Werte festgelegt sind.
Ausnahmen
expression
oder type
ist null
.
Zwischen expression
.Type und type
ist kein Konvertierungsoperator definiert.
Beispiele
Das folgende Codebeispiel zeigt, wie Sie einen Ausdruck erstellen, der einen Typkonvertierungsvorgang darstellt.
// 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
Hinweise
Die Method -Eigenschaft des resultierenden UnaryExpression wird auf die implementierende Methode festgelegt. Die IsLiftedToNull-Eigenschaft ist false
. Wenn der Knoten angehoben wird, IsLifted ist true
. Andernfalls lautet der Wert false
.
Implementieren der Methode
Die folgenden Regeln bestimmen die Implementierungsmethode für den Vorgang:
Wenn einer von
expression
ist. Typ odertype
ist ein benutzerdefinierter Typ, der einen impliziten oder expliziten Konvertierungsoperator definiert. Der , der MethodInfo diesen Operator darstellt, ist die implementierende Methode.Andernfalls:
Wenn beide
expression
. Geben Sie numerische oder boolesche Typen oder nullable oder nicht nullable Enumerationstypen an, undtype
stellen Sie sie dar. Die implementierende Methode istnull
.Wenn einer von
expression
ist. Der Typ odertype
ist ein Verweistyp, und eine explizite Boxing-, Unboxing- oder Verweiskonvertierung ist ausexpression
vorhanden. Geben Sie in eintype
, die implementierende Methode istnull
.
Lifted versus Non-Lifted
Wenn die implementierenden Methode nicht null
lautet:
Wenn
expression
. Der Typ kann dem Argumenttyp der implementierenden Methode zugewiesen werden, und der Rückgabetyp der implementierenden Methode kann zugewiesentype
werden, und der Knoten wird nicht angehoben.Wenn einer oder beide von
expression
. Der Typ odertype
ist ein Nullable-Werttyp, und die entsprechenden Wertetypen, die nicht nullable sind, sind gleich dem Argumenttyp und dem Rückgabetyp der implementierenden Methode. Der Knoten wird angehoben.
Wenn die implementierenden Methode lautet null
:
Wenn beide
expression
. Geben Sie ein, undtype
sind nicht nullable, der Knoten wird nicht angehoben.Andernfalls wird der Knoten angehoben.
Gilt für:
Convert(Expression, Type, MethodInfo)
- Quelle:
- UnaryExpression.cs
- Quelle:
- UnaryExpression.cs
- Quelle:
- UnaryExpression.cs
Erstellt eine UnaryExpression, die eine Konvertierungsoperation darstellt, für die die implementierende Methode angegeben ist.
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
Parameter
- expression
- Expression
Ein Expression, auf den die Operand-Eigenschaft festgelegt werden soll.
- method
- MethodInfo
Ein MethodInfo, auf das die Method-Eigenschaft festgelegt werden soll.
Gibt zurück
Ein UnaryExpression, bei dem die NodeType-Eigenschaft gleich Convert ist und die Eigenschaften Operand, Type und Method auf die angegebenen Werte festgelegt sind.
Ausnahmen
expression
oder type
ist null
.
method
ist nicht null
, und die dadurch dargestellte Methode gibt void
zurück, ist nicht static
(Shared
in Visual Basic) oder akzeptiert nicht genau ein Argument.
Zwischen expression
.Type und type
ist kein Konvertierungsoperator definiert.
- oder -
expression
.Type kann dem Argumenttyp der durch method
dargestellten Methode nicht zugeordnet werden.
- oder -
Der Rückgabetyp der Methode, die durch method
dargestellt wird, kann type
nicht zugeordnet werden.
- oder -
expression
.Type oder type
ist ein Werttyp, der NULL-Werte zulässt, und der entsprechende Werttyp, der keine NULL-Werte zulässt, entspricht nicht dem Argumenttyp bzw. dem Rückgabetyp der durch method
dargestellten Methode.
Es wurde mehr als eine Methode gefunden, die mit der method
-Beschreibung übereinstimmt.
Hinweise
Die Method -Eigenschaft des resultierenden UnaryExpression wird auf die implementierende Methode festgelegt. Die IsLiftedToNull-Eigenschaft ist false
. Wenn der Knoten angehoben wird, IsLifted ist true
. Andernfalls lautet der Wert false
.
Implementieren der Methode
Die folgenden Regeln bestimmen die Implementierungsmethode für den Vorgang:
Wenn die Methode nicht
null
ist, handelt es sich um die implementierenden Methode. Sie muss eine nicht leere Methode (Shared
in Visual Basic) darstellen,static
die ein Argument akzeptiert.Andernfalls, wenn entweder
expression
. Typ odertype
ist ein benutzerdefinierter Typ, der einen impliziten oder expliziten Konvertierungsoperator definiert. Der , der MethodInfo diesen Operator darstellt, ist die implementierende Methode.Andernfalls:
Wenn beide
expression
. Geben Sie numerische oder boolesche Typen oder nullable oder nicht nullable Enumerationstypen an, undtype
stellen Sie sie dar. Die implementierende Methode istnull
.Wenn einer von
expression
ist. Der Typ odertype
ist ein Verweistyp, und eine explizite Boxing-, Unboxing- oder Verweiskonvertierung ist ausexpression
vorhanden. Geben Sie in eintype
, die implementierende Methode istnull
.
Lifted versus Non-Lifted
Wenn die implementierenden Methode nicht null
lautet:
Wenn
expression
. Der Typ kann dem Argumenttyp der implementierenden Methode zugewiesen werden, und der Rückgabetyp der implementierenden Methode kann zugewiesentype
werden, und der Knoten wird nicht angehoben.Wenn entweder oder beides von .
expression
Der Typ odertype
ist ein Nullable-Werttyp, und die entsprechenden Wertetypen, die nicht nullable sind, sind gleich dem Argumenttyp und dem Rückgabetyp der implementierenden Methode. Der Knoten wird angehoben.
Wenn die implementierenden Methode lautet null
:
Wenn beide
expression
. Geben Sie ein, undtype
sind nicht nullable, der Knoten wird nicht angehoben.Andernfalls wird der Knoten angehoben.