Expression.Convert Метод

Определение

Создает выражение UnaryExpression, представляющее операцию преобразования типа.

Перегрузки

Convert(Expression, Type)

Создает выражение UnaryExpression, представляющее операцию преобразования типа.

Convert(Expression, Type, MethodInfo)

Создает UnaryExpression, представляющее операцию преобразования, для которой указан метод реализации.

Convert(Expression, Type)

Создает выражение 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

Выражение 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.

Lifted и non-Lifted

Если метод реализации не nullимеет значение :

  • If expression. Тип присваивается типу аргумента реализующего метода, а возвращаемый тип реализующего метода можно typeназначить, узел не поднимается.

  • Если один или оба из expressionних. Тип или type является типом значения, допускающим значение NULL, и соответствующие типы значений, не допускающие значения NULL, равны типу аргумента и типу возвращаемого значения метода реализации соответственно, узел поднимается.

Если реализуется nullметод:

  • Если оба expression. Тип и type не допускает значения NULL, узел не поднимается.

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

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

Convert(Expression, Type, MethodInfo)

Создает 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

Выражение 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является, это метод реализации. Он должен представлять непустый static метод (Sharedв Visual Basic), который принимает один аргумент.

  • В противном случае, если одно из этих expressionвариантов. Тип или type является определяемым пользователем типом, определяющим неявный или явный оператор преобразования, MethodInfo который представляет этот оператор является методом реализации.

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

    • Если оба expression. Тип и type представляет числовые или логические типы, типы перечисления, допускающие значение NULL или не допускающие значения NULL, — это nullметод реализации.

    • Если одно из этих вариантов expression. Тип или type является ссылочным типом и явным прямоугольником, распаковкой или преобразованием ссылок. expression Тип в type, реализующим методом является null.

Lifted и non-Lifted

Если метод реализации не nullимеет значение :

  • If expression. Тип присваивается типу аргумента реализующего метода, а возвращаемый тип реализующего метода можно typeназначить, узел не поднимается.

  • Если одно или и то или и другое . expression Тип или type тип значения, допускающий значение NULL, и соответствующие типы значений, не допускающие значения NULL, равны типу аргумента и типу возвращаемого значения метода реализации соответственно, то узел поднимается.

Если реализуется nullметод:

  • Если оба expression. Тип и type не допускает значения NULL, узел не поднимается.

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

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