共用方式為


Expression.Convert 方法

定義

建立代表類型轉換作業的 UnaryExpression

多載

Convert(Expression, Type)

建立代表類型轉換作業的 UnaryExpression

Convert(Expression, Type, MethodInfo)

建立代表轉換作業的 UnaryExpression,此轉換作業已指定實作方法。

Convert(Expression, Type)

來源:
UnaryExpression.cs
來源:
UnaryExpression.cs
來源:
UnaryExpression.cs

建立代表類型轉換作業的 UnaryExpression

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

參數

expression
Expression

要將 Expression 屬性設定為與之相等的 Operand

type
Type

要將 Type 屬性設定為與之相等的 Type

傳回

UnaryExpression,其 NodeType 屬性等於 Convert,且 OperandType 屬性設定為指定的值。

例外狀況

expressiontypenull

expression.Type 和 type 之間未定義轉換運算子。

範例

下列程式代碼範例示範如何建立代表類型轉換作業的表達式。

// 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

備註

產生的 MethodUnaryExpression 屬性會設定為實作方法。 IsLiftedToNull 屬性為 false。 如果節點隨即提升, IsLifted 則為 true。 否則,會是 false

實作方法

下列規則會決定作業的實作方法:

  • 如果任一 expression個 。類型或 type 是定義隱含或明確轉換運算子的使用者定義型別, MethodInfo 表示該運算符是實作方法。

  • 否則:

    • 如果兩者皆為 expression。型別和 type 代表數值或布爾型別,或可為 Null 或不可為 Null 的列舉型別,實作方法為 null

    • 如果任一 expression個 。類型或 type 是參考型別,而且有來自 expression的明確 Boxing、unboxing 或參考轉換。類型為 type,實作方法為 null

隨即轉移與非增益

如果實作方法不是 null

  • 如果為 expression。類型可指派給實作方法的自變數型別,而實作方法的傳回型別可指派給 type,節點不會隨即解除。

  • 如果其中一個或兩者皆為 expression。類型或 type 為可為 Null 的實值型別,而對應的不可為 Null 實作實值型別與實作方法的傳回型別相等,節點就會隨即提升。

如果實作方法為 null

  • 如果兩者皆為 expression。型別和 type 不可為 Null,節點不會隨即解除。

  • 否則,節點會隨即提升。

適用於

Convert(Expression, Type, MethodInfo)

來源:
UnaryExpression.cs
來源:
UnaryExpression.cs
來源:
UnaryExpression.cs

建立代表轉換作業的 UnaryExpression,此轉換作業已指定實作方法。

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

參數

expression
Expression

要將 Expression 屬性設定為與之相等的 Operand

type
Type

要將 Type 屬性設定為與之相等的 Type

method
MethodInfo

要將 MethodInfo 屬性設定為與之相等的 Method

傳回

UnaryExpression,其 NodeType 屬性等於 Convert,且 OperandTypeMethod 屬性設定為指定的值。

例外狀況

expressiontypenull

method 不是 null,而且其代表的方法傳回的是 void,不是 static (在 Visual Basic 中為 Shared),或者使用的引數不是剛好一個。

expression.Type 和 type 之間未定義轉換運算子。

-或-

expression.Type 無法指派給 method 所代表方法的引數類型。

-或-

method 所代表方法的傳回類型無法指派給 type

-或-

expression.Type 或 type 是不可為 Null 的實值類型,且對應之不可為 Null 的實值類型不等於 method 所表示之方法的引數類型或傳回類型。

已找到一個以上的方法符合 method 說明。

備註

產生的 MethodUnaryExpression 屬性會設定為實作方法。 IsLiftedToNull 屬性為 false。 如果節點隨即提升, IsLifted 則為 true。 否則,會是 false

實作方法

下列規則會決定作業的實作方法:

  • 如果方法不是 null,則為實作方法。 它必須代表採用一個自變數的 Visual Basic) 方法中的非 void (staticShared

  • 否則,如果其中一個 expression為 。類型或 type 是定義隱含或明確轉換運算子的使用者定義型別, MethodInfo 表示該運算符是實作方法。

  • 否則:

    • 如果兩者皆為 expression。型別和 type 代表數值或布爾型別,或可為 Null 或不可為 Null 的列舉型別,實作方法為 null

    • 如果任一 expression個 。類型或 type 是參考型別,而且有來自 expression的明確 Boxing、unboxing 或參考轉換。類型為 type,實作方法為 null

隨即轉移與非增益

如果實作方法不是 null

  • 如果為 expression。類型可指派給實作方法的自變數型別,而實作方法的傳回型別可指派給 type,節點不會隨即解除。

  • 如果為或兩者 expression。類型或 type 為可為 Null 的實值型別,而對應的不可為 Null 實作實值型別會分別等於自變數型別和實作方法的傳回型別,則會隨即提升節點。

如果實作方法為 null

  • 如果兩者皆為 expression。型別和 type 不可為 Null,節點不會隨即解除。

  • 否則,節點會隨即提升。

適用於