Expression.Convert Metoda

Definicja

Tworzy obiekt UnaryExpression reprezentujący operację konwersji typu.

Przeciążenia

Convert(Expression, Type)

Tworzy obiekt UnaryExpression reprezentujący operację konwersji typu.

Convert(Expression, Type, MethodInfo)

Tworzy obiekt UnaryExpression reprezentujący operację konwersji, dla której określono metodę implementującą.

Convert(Expression, Type)

Źródło:
UnaryExpression.cs
Źródło:
UnaryExpression.cs
Źródło:
UnaryExpression.cs

Tworzy obiekt UnaryExpression reprezentujący operację konwersji typu.

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

Parametry

expression
Expression

Element , Expression aby ustawić właściwość równą Operand .

type
Type

A Type , aby ustawić właściwość równą Type .

Zwraca

WłaściwośćUnaryExpression, która ma właściwość równą ConvertNodeType i Operand właściwości i Type ustawioną na określone wartości.

Wyjątki

expression lub type to null.

Nie zdefiniowano operatora konwersji między elementami expression. Wpisz i type.

Przykłady

W poniższym przykładzie kodu pokazano, jak utworzyć wyrażenie reprezentujące operację konwersji typu.

// 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

Uwagi

Właściwość Method wynikowej UnaryExpression jest ustawiona na metodę implementowania. Właściwość IsLiftedToNull to false. Jeśli węzeł zostanie zniesiony, IsLifted to .true W przeciwnym razie jest falseto .

Metoda implementująca

Następujące reguły określają metodę implementowania operacji:

  • Jeśli albo expression. Typ lub type jest typem zdefiniowanym przez użytkownika, który definiuje niejawny lub jawny operator konwersji, MethodInfo który reprezentuje ten operator jest metodą implementowania.

  • W przeciwnym razie:

    • Jeśli oba expression. Wpisz i type reprezentuje typy liczbowe lub logiczne albo typy wyliczalne o wartości null lub niezwiązane z wartością null, metoda implementowania to null.

    • Jeśli albo expression. Typ lub type jest typem referencyjnym, a jawne boxing, rozpakowywanie lub konwersja odwołania istnieje z expressionklasy . Wpisz wartość type, metoda implementowania to null.

Podniesione i niepodniesione

Jeśli metoda implementowania nie nulljest :

  • Jeśli expression. Typ jest przypisywany do typu argumentu metody implementowania, a zwracany typ metody implementowania można przypisać do typeelementu , węzeł nie zostanie zniesiony.

  • Jeśli jeden lub oba z nich expression. Typ lub type jest typem wartości dopuszczanej do wartości null, a odpowiadające im typy wartości nienależących do wartości są równe typowi argumentu, a zwracany typ metody implementowania, węzeł zostanie zniesiony.

Jeśli metoda implementowania to null:

  • Jeśli oba expression. Wpisz i type nie ma wartości null, węzeł nie zostanie zniesiony.

  • W przeciwnym razie węzeł zostanie zniesiony.

Dotyczy

Convert(Expression, Type, MethodInfo)

Źródło:
UnaryExpression.cs
Źródło:
UnaryExpression.cs
Źródło:
UnaryExpression.cs

Tworzy obiekt UnaryExpression reprezentujący operację konwersji, dla której określono metodę implementującą.

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

Parametry

expression
Expression

Element , Expression aby ustawić właściwość równą Operand .

type
Type

A Type , aby ustawić właściwość równą Type .

method
MethodInfo

A MethodInfo , aby ustawić właściwość równą Method .

Zwraca

WłaściwośćUnaryExpression, która ma właściwość równą ConvertNodeType wartościom , i OperandType, i Method ustawioną na określone wartości.

Wyjątki

expression lub type to null.

method nie null jest i metoda, która reprezentuje zwraca voidwartość , nie static jest (Shared w Visual Basic) lub nie bierze dokładnie jednego argumentu.

Nie zdefiniowano operatora konwersji między elementami expression. Wpisz i type.

-lub-

expression. Typ nie można przypisać do typu argumentu metody reprezentowanej przez .method

-lub-

Zwracany typ metody reprezentowanej przez method program nie można przypisać do typeelementu .

-lub-

expression. Typ lub type jest typem wartości dopuszczalnej wartości null, a odpowiadający mu typ wartości bez wartości null nie jest równy typowi argumentu ani typowi zwracanemu odpowiednio metody reprezentowanej przez methodmetodę .

Znaleziono więcej niż jedną metodę zgodną z opisem method .

Uwagi

Właściwość Method wynikowej UnaryExpression jest ustawiona na metodę implementowania. Właściwość IsLiftedToNull to false. Jeśli węzeł zostanie zniesiony, IsLifted to .true W przeciwnym razie jest falseto .

Metoda implementująca

Następujące reguły określają metodę implementowania operacji:

  • Jeśli metoda nie nulljest , jest to metoda implementowania. Musi reprezentować metodę niepustą ( staticShared w Visual Basic), która przyjmuje jeden argument.

  • W przeciwnym razie, jeśli albo expression. Typ lub type jest typem zdefiniowanym przez użytkownika, który definiuje niejawny lub jawny operator konwersji, MethodInfo który reprezentuje ten operator jest metodą implementowania.

  • W przeciwnym razie:

    • Jeśli oba expression. Wpisz i type reprezentuje typy liczbowe lub logiczne albo typy wyliczalne o wartości null lub niezwiązane z wartością null, metoda implementowania to null.

    • Jeśli albo expression. Typ lub type jest typem referencyjnym, a jawne boxing, rozpakowywanie lub konwersja odwołania istnieje z expressionklasy . Wpisz wartość type, metoda implementowania to null.

Podniesione i niepodniesione

Jeśli metoda implementowania nie nulljest :

  • Jeśli expression. Typ jest przypisywany do typu argumentu metody implementowania, a zwracany typ metody implementowania można przypisać do typeelementu , węzeł nie zostanie zniesiony.

  • Jeśli jeden lub oba z . expression Typ lub type to typ wartości dopuszczający wartość null, a odpowiadające im typy wartości niepustych są równe typowi argumentu i zwracanym typowi metody implementowania, węzeł zostanie zniesiony.

Jeśli metoda implementowania to null:

  • Jeśli oba expression. Wpisz i type nie ma wartości null, węzeł nie zostanie zniesiony.

  • W przeciwnym razie węzeł zostanie zniesiony.

Dotyczy