Поделиться через


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.

type
Type

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

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

Выражение 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 объекта присваивается реализующий метод . Значение свойства IsLiftedToNullfalse. Если узел снят, 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.

type
Type

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

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 объекта присваивается реализующий метод . Значение свойства IsLiftedToNullfalse. Если узел снят, IsLifted имеет значение true. В противном случае значение равно false.

Реализация метода

Следующие правила определяют метод реализации для операции:

  • Если метод не nullимеет значение , это реализующие методы. Он должен представлять метод non-void ( staticShared в 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, узел не отменяется.

  • В противном случае узел будет отменен.

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