Expression.ConvertChecked Метод

Определение

Создает UnaryExpression, представляющее операцию преобразования, создающую исключение, если целевой тип переполнен.Creates a UnaryExpression that represents a conversion operation that throws an exception if the target type is overflowed.

Перегрузки

ConvertChecked(Expression, Type)

Создает UnaryExpression, представляющее операцию преобразования, создающую исключение, если целевой тип переполнен.Creates a UnaryExpression that represents a conversion operation that throws an exception if the target type is overflowed.

ConvertChecked(Expression, Type, MethodInfo)

Создает UnaryExpression, представляющее операцию преобразования, создающую исключение, если целевой тип переполнен, и для которой указан метод реализации.Creates a UnaryExpression that represents a conversion operation that throws an exception if the target type is overflowed and for which the implementing method is specified.

ConvertChecked(Expression, Type)

Создает UnaryExpression, представляющее операцию преобразования, создающую исключение, если целевой тип переполнен.Creates a UnaryExpression that represents a conversion operation that throws an exception if the target type is overflowed.

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

Параметры

expression
Expression

Объект Expression, который следует задать в качестве значения свойства Operand.An Expression to set the Operand property equal to.

type
Type

Объект Type, который следует задать в качестве значения свойства Type.A Type to set the Type property equal to.

Возвращаемое значение

Выражение UnaryExpression со свойствомNodeType, равным ConvertChecked, и свойствами Operand и Type, для которых заданы указанные значения.A UnaryExpression that has the NodeType property equal to ConvertChecked and the Operand and Type properties set to the specified values.

Исключения

Параметр expression или type имеет значение null.expression or type is null.

Оператор преобразования не определен для типов expression.Type и type.Type.No conversion operator is defined between expression.Type and type.

Комментарии

Свойству Method результирующей UnaryExpression присваивается метод реализации.The Method property of the resulting UnaryExpression is set to the implementing method. Значение свойства IsLiftedToNullfalse.The IsLiftedToNull property is false. Если узел ликвидируется, IsLifted true.If the node is lifted, IsLifted is true. В противном случае — false.Otherwise, it is false.

Метод реализацииImplementing Method

Следующие правила определяют метод реализации для операции.The following rules determine the implementing method for the operation:

  • Значение, если expression. Тип или type — это определяемый пользователем тип, определяющий неявный или явный оператор преобразования, MethodInfo, представляющий этот оператор, является реализующим методом.If either expression.Type or type is a user-defined type that defines an implicit or explicit conversion operator, the MethodInfo that represents that operator is the implementing method.

  • В противном случае:Otherwise:

    • Если оба expression. Type и type представляют числовые или логические типы, а также типы перечисления, допускающие значение null или не допускающие значения NULL, метод реализации null.If both expression.Type and type represent numeric or Boolean types, or nullable or non-nullable enumeration types, the implementing method is null.

    • Значение, если expression. Тип или type — это ссылочный тип, и в expressionсуществует явное преобразование упаковки, распаковки или ссылки. Для typeвведите метод реализации null.If either expression.Type or type is a reference type and an explicit boxing, unboxing, or reference conversion exists from expression.Type to type, the implementing method is null.

С нулификацией и без приподнятияLifted versus Non-Lifted

Если метод реализации не null:If the implementing method is not null:

  • Если expression. Тип можно присвоить типу аргумента реализующего метода, и тип возвращаемого значения метода реализации можно присвоить type, узел не ликвидируется.If expression.Type is assignable to the argument type of the implementing method and the return type of the implementing method is assignable to type, the node is not lifted.

  • Если один или оба expression. Тип или type являются типом значения, допускающим значение null, и соответствующие типы значений, не допускающие значения NULL, равны типу аргумента и возвращаемому типу метода реализации соответственно, узел ликвидируется.If either or both of expression.Type or type are a nullable value type and the corresponding non-nullable value types are equal to the argument type and the return type of the implementing method respectively, the node is lifted.

Если метод реализации имеет null:If the implementing method is null:

  • Если оба expression. Типы и type не допускают значения NULL, узел не ликвидируется.If both expression.Type and type are non-nullable, the node is not lifted.

  • В противном случае узел ликвидируется.Otherwise the node is lifted.

ConvertChecked(Expression, Type, MethodInfo)

Создает UnaryExpression, представляющее операцию преобразования, создающую исключение, если целевой тип переполнен, и для которой указан метод реализации.Creates a UnaryExpression that represents a conversion operation that throws an exception if the target type is overflowed and for which the implementing method is specified.

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

Параметры

expression
Expression

Объект Expression, который следует задать в качестве значения свойства Operand.An Expression to set the Operand property equal to.

type
Type

Объект Type, который следует задать в качестве значения свойства Type.A Type to set the Type property equal to.

method
MethodInfo

Объект MethodInfo, который следует задать в качестве значения свойства Method.A MethodInfo to set the Method property equal to.

Возвращаемое значение

Выражение UnaryExpression со свойством NodeType, равным ConvertChecked, и свойствами Operand, Type и Method, для которых заданы указанные значения.A UnaryExpression that has the NodeType property equal to ConvertChecked and the Operand, Type, and Method properties set to the specified values.

Исключения

Параметр expression или type имеет значение null.expression or type is null.

Значение параметра method не равно null, и метод, который представляется этим параметром, возвращает значение void, не является static (Shared в Visual Basic) и не принимает ровно один аргумент.method is not null and the method it represents returns void, is not static (Shared in Visual Basic), or does not take exactly one argument.

Оператор преобразования не определен для типов expression.Type и type.Type.No conversion operator is defined between expression.Type and type.

-или--or- Параметр expression.Type не назначается типу аргумента метода, представленному параметром method.expression.Type is not assignable to the argument type of the method represented by method.

-или--or- Тип возврата метода, представленный method, не назначается для type.The return type of the method represented by method is not assignable to type.

-или--or- Тип expression.Type или type поддерживает тип значения, а соответствующий тип, не поддерживающий значение null, не равен типу аргумента и типу возврата, соответственно метода, представленного method.expression.Type or type is a nullable value type and the corresponding non-nullable value type does not equal the argument type or the return type, respectively, of the method represented by method.

Найдено более одного метода, соответствующего описанию method.More than one method that matches the method description was found.

Комментарии

Свойству Method результирующей UnaryExpression присваивается метод реализации.The Method property of the resulting UnaryExpression is set to the implementing method. Значение свойства IsLiftedToNullfalse.The IsLiftedToNull property is false. Если узел ликвидируется, IsLifted true.If the node is lifted, IsLifted is true. В противном случае — false.Otherwise, it is false.

Метод реализацииImplementing Method

Следующие правила определяют метод реализации для операции.The following rules determine the implementing method for the operation:

  • Если метод не null, то это метод реализации.If method is not null, it is the implementing method. Он должен представлять метод, не являющийся void, static (Shared в Visual Basic), который принимает один аргумент.It must represent a non-void, static (Shared in Visual Basic) method that takes one argument.

  • В противном случае — значение, если expression. Тип или type — это определяемый пользователем тип, определяющий неявный или явный оператор преобразования, MethodInfo, представляющий этот оператор, является реализующим методом.Otherwise, if either expression.Type or type is a user-defined type that defines an implicit or explicit conversion operator, the MethodInfo that represents that operator is the implementing method.

  • В противном случае:Otherwise:

    • Если оба expression. Type и type представляют числовые или логические типы, а также типы перечисления, допускающие значение null или не допускающие значения NULL, метод реализации null.If both expression.Type and type represent numeric or Boolean types, or nullable or non-nullable enumeration types, the implementing method is null.

    • Значение, если expression. Тип или type — это ссылочный тип, и в expressionсуществует явное преобразование упаковки, распаковки или ссылки. Для typeвведите метод реализации null.If either expression.Type or type is a reference type and an explicit boxing, unboxing, or reference conversion exists from expression.Type to type, the implementing method is null.

С нулификацией и без приподнятияLifted versus Non-Lifted

Если метод реализации не null:If the implementing method is not null:

  • Если expression. Тип можно присвоить типу аргумента реализующего метода, и тип возвращаемого значения метода реализации можно присвоить type, узел не ликвидируется.If expression.Type is assignable to the argument type of the implementing method and the return type of the implementing method is assignable to type, the node is not lifted.

  • Если один или оба expression. Тип или type являются типом значения, допускающим значение null, и соответствующие типы значений, не допускающие значения NULL, равны типу аргумента и возвращаемому типу метода реализации соответственно, узел ликвидируется.If either or both of expression.Type or type are a nullable value type and the corresponding non-nullable value types are equal to the argument type and the return type of the implementing method respectively, the node is lifted.

Если метод реализации имеет null:If the implementing method is null:

  • Если оба expression. Типы и type не допускают значения NULL, узел не ликвидируется.If both expression.Type and type are non-nullable, the node is not lifted.

  • В противном случае узел ликвидируется.Otherwise the node is lifted.

Применяется к