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键入到 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键入到 type,实现方法是 null

提升与非提升

如果实现方法不是 null

  • 如果 expression。类型可分配给实现方法的参数类型,并且实现方法的返回类型可 type分配给该实现方法,节点不会解除。

  • 如果任一或两者。 expression类型或 type 为可为 null 的值类型,相应的不可为 null 值类型分别等于参数类型和实现方法的返回类型,将提升节点。

如果实现方法是 null

  • 如果两者。 expression类型且 type 不可为 null,则不会提升节点。

  • 否则,将提升节点。

适用于