Expression.ConvertChecked 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立代表轉換作業的 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。
傳回
UnaryExpression,其 NodeType 屬性等於 ConvertChecked,且 Operand 和 Type 屬性設定為指定的值。
例外狀況
expression
或 type
為 null
。
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。
- method
- MethodInfo
要將 MethodInfo 屬性設定為與之相等的 Method。
傳回
UnaryExpression,其 NodeType 屬性等於 ConvertChecked,且 Operand、Type 和 Method 屬性設定為指定的值。
例外狀況
expression
或 type
為 null
。
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 表示該運算符的 是實作方法。否則:
如果兩者皆為
expression
。type
類型和表示數值或布爾型別,或可為 Null 或不可為 Null 的列舉型別,實作方法為null
。如果其中一個
expression
為 。類型或type
是參考型別,而且有來自expression
的明確 Boxing、unboxing 或參考轉換。類型為type
,實作方法為null
。
隨即轉移與非隨即轉移
如果實作方法不是 null
:
如果為
expression
。類型可指派給實作方法的自變數類型,且實作方法的傳回型別可指派給type
,節點不會隨即解除。如果 其中一個或兩者皆為
expression
。類型或type
是可為 Null 的實值型別,而對應的不可為 Null 實作實值型別會分別等於自變數型別和實作方法的傳回型別,則會隨即轉移節點。
如果實作方法為 null
:
如果兩者皆為
expression
。type
類型和 不可為 Null,節點不會隨即解除。否則會隨即隨即解除節點。