Бөлісу құралы:


Expression.Convert Метод

Определение

Создает операцию UnaryExpression преобразования типов.

Перегрузки

Имя Описание
Convert(Expression, Type)

Создает операцию UnaryExpression преобразования типов.

Convert(Expression, Type, MethodInfo)

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

Convert(Expression, Type)

Исходный код:
UnaryExpression.cs
Исходный код:
UnaryExpression.cs
Исходный код:
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 , равное свойству NodeTypeConvert и OperandType свойствам, заданным указанным значениям.

Исключения

expression или type есть null.

Оператор преобразования не определен между expression. Тип и 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 :

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

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

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

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

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

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

Convert(Expression, Type, MethodInfo)

Исходный код:
UnaryExpression.cs
Исходный код:
UnaryExpression.cs
Исходный код:
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, равное свойству NodeTypeConvert и OperandTypeсвойству, Method заданному указанным значениям.

Исключения

expression или type есть null.

method не null является и метод, который он представляет возвращаемого значения void, не static является (Shared в Visual Basic) или не принимает ровно один аргумент.

Оператор преобразования не определен между expression. Тип и type.

–или–

expression. Тип не присваивается типу аргумента метода, methodпредставленному .

–или–

Возвращаемый тип метода, method представленный не может typeбыть назначен.

–или–

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

Обнаружено несколько методов, соответствующих описанию method .

Комментарии

Свойство Method результирующего UnaryExpression объекта имеет значение реализующего метода. Свойство IsLiftedToNull является false. Если узел снят, IsLifted имеет значение true. В противном случае значение равно false.

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

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

  • Если метод не nullявляется, это метод реализации. Он должен представлять непустый static метод (Shared в Visual Basic), который принимает один аргумент.

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

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

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

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

Снято и не снято

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

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

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

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

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

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

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