Expression.Convert Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает выражение UnaryExpression, представляющее операцию преобразования типа.
Перегрузки
Convert(Expression, Type) |
Создает выражение UnaryExpression, представляющее операцию преобразования типа. |
Convert(Expression, Type, MethodInfo) |
Создает UnaryExpression, представляющее операцию преобразования, для которой указан метод реализации. |
Convert(Expression, Type)
- Исходный код:
- UnaryExpression.cs
- Исходный код:
- UnaryExpression.cs
- Исходный код:
- UnaryExpression.cs
Создает выражение UnaryExpression, представляющее операцию преобразования типа.
public:
static System::Linq::Expressions::UnaryExpression ^ Convert(System::Linq::Expressions::Expression ^ expression, Type ^ type);
public static System.Linq.Expressions.UnaryExpression Convert (System.Linq.Expressions.Expression expression, Type type);
static member Convert : System.Linq.Expressions.Expression * Type -> System.Linq.Expressions.UnaryExpression
Public Shared Function Convert (expression As Expression, type As Type) As UnaryExpression
Параметры
- expression
- Expression
Объект Expression, который следует задать в качестве значения свойства Operand.
Возвращаемое значение
Выражение UnaryExpression со свойствомNodeType, равным Convert, и свойствами Operand и Type, для которых заданы указанные значения.
Исключения
Параметр expression
или type
имеет значение null
.
Оператор преобразования не определен для типов expression
.Type и type
.Type.
Примеры
В следующем примере кода показано, как создать выражение, представляющее операцию преобразования типа.
// Add the following directive to your file:
// using System.Linq.Expressions;
// This expression represents a type conversion operation.
Expression convertExpr = Expression.Convert(
Expression.Constant(5.5),
typeof(Int16)
);
// Print out the expression.
Console.WriteLine(convertExpr.ToString());
// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda<Func<Int16>>(convertExpr).Compile()());
// This code example produces the following output:
//
// Convert(5.5)
// 5
' Add the following directive to your file:
' Imports System.Linq.Expressions
' This expression represents a type conversion operation.
Dim convertExpr As Expression = Expression.Convert(
Expression.Constant(5.5),
GetType(Int16)
)
' Print the expression.
Console.WriteLine(convertExpr.ToString())
' The following statement first creates an expression tree,
' then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda(Of Func(Of Int16))(convertExpr).Compile()())
' This code example produces the following output:
'
' Convert(5.5)
' 5
Комментарии
Свойству 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, узел не отменяется.В противном случае узел будет отменен.
Применяется к
Convert(Expression, Type, MethodInfo)
- Исходный код:
- UnaryExpression.cs
- Исходный код:
- UnaryExpression.cs
- Исходный код:
- UnaryExpression.cs
Создает UnaryExpression, представляющее операцию преобразования, для которой указан метод реализации.
public:
static System::Linq::Expressions::UnaryExpression ^ Convert(System::Linq::Expressions::Expression ^ expression, Type ^ type, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.UnaryExpression Convert (System.Linq.Expressions.Expression expression, Type type, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.UnaryExpression Convert (System.Linq.Expressions.Expression expression, Type type, System.Reflection.MethodInfo? method);
static member Convert : System.Linq.Expressions.Expression * Type * System.Reflection.MethodInfo -> System.Linq.Expressions.UnaryExpression
Public Shared Function Convert (expression As Expression, type As Type, method As MethodInfo) As UnaryExpression
Параметры
- expression
- Expression
Объект Expression, который следует задать в качестве значения свойства Operand.
- method
- MethodInfo
Объект MethodInfo, который следует задать в качестве значения свойства Method.
Возвращаемое значение
Выражение UnaryExpression со свойством NodeType, равным Convert, и свойствами Operand, Type и Method, для которых заданы указанные значения.
Исключения
Параметр expression
или type
имеет значение null
.
Значение параметра method
не равно null
, и метод, который представляется этим параметром, возвращает значение void
, не является static
(Shared
в Visual Basic) и не принимает ровно один аргумент.
Оператор преобразования не определен для типов expression
.Type и type
.Type.
-или-
Параметр expression
.Type не назначается типу аргумента метода, представленному параметром method
.
-или-
Тип возврата метода, представленный method
, не назначается для type
.
-или-
Тип expression
.Type или type
поддерживает тип значения, а соответствующий тип, не поддерживающий значение null, не равен типу аргумента и типу возврата, соответственно метода, представленного method
.
Найдено более одного метода, соответствующего описанию method
.
Комментарии
Свойству Method результирующего UnaryExpression объекта присваивается реализующий метод . Значение свойства IsLiftedToNull — false
. Если узел снят, IsLifted имеет значение true
. В противном случае значение равно false
.
Реализация метода
Следующие правила определяют метод реализации для операции:
Если метод не
null
имеет значение , это реализующие методы. Он должен представлять метод non-void (static
Shared
в Visual Basic), который принимает один аргумент.В противном случае , если либо
expression
. Тип илиtype
— это определяемый пользователем тип, определяющий неявный или явный оператор преобразования, MethodInfo представляющий этот оператор, является реализующим методом.В противном случае:
Если оба
expression
. Тип иtype
представляют числовые или логические типы, а также типы перечисления, допускающие значение NULL или не допускающие значения NULL. Реализующий метод имеет значениеnull
.Если один из этих вариантов
expression
: . Тип илиtype
является ссылочным типом и явным преобразованием, распаковкой или преобразованием ссылок изexpression
. Введите вtype
значение , реализующим методом являетсяnull
.
Снятые и не поднятые
Если реализующим методом не null
является :
Если
expression
. Тип можно назначить типу аргумента реализующего метода, а тип возвращаемого значения реализующего метода можноtype
назначить , узел не отменяется.Если один или оба из .
expression
Тип илиtype
являются типом значения, допускающим значение NULL, а соответствующие типы значений, не допускающие значения NULL, равны типу аргумента и типу возвращаемого значения реализующего метода соответственно, при этом узел отменяется.
Если реализующим методом является null
:
Если оба
expression
. Тип иtype
не допускает значения NULL, узел не отменяется.В противном случае узел будет отменен.