Share via


Expression.ConvertChecked 方法

定義

建立代表轉換作業的 UnaryExpression;若目標類型已溢位,此運算式便會擲回例外狀況。

多載

ConvertChecked(Expression, Type)

建立代表轉換作業的 UnaryExpression;若目標類型已溢位,此運算式便會擲回例外狀況。

ConvertChecked(Expression, Type, MethodInfo)

建立代表轉換作業的 UnaryExpression,如果目標類型已溢位,且已指定此作業的實作方法,則此作業會擲回例外狀況。

ConvertChecked(Expression, Type)

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

建立代表轉換作業的 UnaryExpression;若目標類型已溢位,此運算式便會擲回例外狀況。

public:
 static System::Linq::Expressions::UnaryExpression ^ ConvertChecked(System::Linq::Expressions::Expression ^ expression, Type ^ type);
public static System.Linq.Expressions.UnaryExpression ConvertChecked (System.Linq.Expressions.Expression expression, Type type);
static member ConvertChecked : System.Linq.Expressions.Expression * Type -> System.Linq.Expressions.UnaryExpression
Public Shared Function ConvertChecked (expression As Expression, type As Type) As UnaryExpression

參數

expression
Expression

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

type
Type

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

傳回

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

例外狀況

expressiontypenull

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

備註

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

實作方法

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

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

  • 否則:

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

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

隨即轉移與非隨即轉移

如果實作方法不是 null

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

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

如果實作方法為 null

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

  • 否則會隨即隨即解除節點。

適用於

ConvertChecked(Expression, Type, MethodInfo)

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

建立代表轉換作業的 UnaryExpression,如果目標類型已溢位,且已指定此作業的實作方法,則此作業會擲回例外狀況。

public:
 static System::Linq::Expressions::UnaryExpression ^ ConvertChecked(System::Linq::Expressions::Expression ^ expression, Type ^ type, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.UnaryExpression ConvertChecked (System.Linq.Expressions.Expression expression, Type type, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.UnaryExpression ConvertChecked (System.Linq.Expressions.Expression expression, Type type, System.Reflection.MethodInfo? method);
static member ConvertChecked : System.Linq.Expressions.Expression * Type * System.Reflection.MethodInfo -> System.Linq.Expressions.UnaryExpression
Public Shared Function ConvertChecked (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 屬性等於 ConvertChecked,且 OperandTypeMethod 屬性設定為指定的值。

例外狀況

expressiontypenull

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

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

-或-

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

-或-

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

-或-

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

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

備註

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

實作方法

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

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

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

  • 否則:

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

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

隨即轉移與非隨即轉移

如果實作方法不是 null

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

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

如果實作方法為 null

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

  • 否則會隨即隨即解除節點。

適用於