Expression.ConvertChecked 方法

定義

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

多載

ConvertChecked(Expression, Type)

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

ConvertChecked(Expression, Type, MethodInfo)

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

ConvertChecked(Expression, Type)

建立代表轉換作業的 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

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

例外狀況

expressiontypenull

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

備註

產生的 Method UnaryExpression 屬性會設定為實作方法。 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,節點不會隨即解除。

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

適用於

ConvertChecked(Expression, Type, MethodInfo)

建立代表轉換作業的 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

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) 方法中的非 void (static Shared

  • 否則,如果其中一個 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,節點不會隨即解除。

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

適用於