Expression.Convert Metod

Definition

Skapar en UnaryExpression som representerar en typkonverteringsåtgärd.

Överlagringar

Name Description
Convert(Expression, Type)

Skapar en UnaryExpression som representerar en typkonverteringsåtgärd.

Convert(Expression, Type, MethodInfo)

Skapar en UnaryExpression som representerar en konverteringsåtgärd som implementeringsmetoden har angetts för.

Convert(Expression, Type)

Skapar en UnaryExpression som representerar en typkonverteringsåtgärd.

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

Parametrar

expression
Expression

En Expression som egenskapen Operand ska vara lika med.

type
Type

A Type för att ange egenskapen Type lika med.

Returer

En UnaryExpression som har egenskapen NodeType lika med Convert och Operand egenskaperna och Type inställda på de angivna värdena.

Undantag

expression eller type är null.

Ingen konverteringsoperator definieras mellan expression. Skriv och type.

Exempel

I följande kodexempel visas hur du skapar ett uttryck som representerar en typkonverteringsåtgärd.

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

Kommentarer

Egenskapen Method för resultatet UnaryExpression är inställd på implementeringsmetoden. Egenskapen IsLiftedToNull är false. Om noden lyfts IsLifted är .true Annars är falsedet .

Implementeringsmetod

Följande regler avgör implementeringsmetoden för åtgärden:

  • Om någon av expressiondem . Skriv eller type är en användardefinierad typ som definierar en implicit eller explicit konverteringsoperator, som representerar den MethodInfo operatorn är implementeringsmetoden.

  • Annars:

    • Om båda expression. Skriv och type representera numeriska eller booleska typer, eller nullbara eller icke-nullbara uppräkningstyper, implementeringsmetoden är null.

    • Om någon av expressiondem . Skriv eller type är en referenstyp och det finns en explicit boxning, avboxning eller referenskonvertering från expression. Skriv till type, implementeringsmetoden är null.

Lyft jämfört med icke-lyft

Om implementeringsmetoden inte nullär :

  • Om expression. Typen kan tilldelas till argumenttypen för implementeringsmetoden och returtypen för implementeringsmetoden kan tilldelas till type, noden lyfts inte.

  • Om en eller båda av expression. Skriv eller type är en nullbar värdetyp och motsvarande icke-nullbara värdetyper är lika med argumenttypen och returtypen för implementeringsmetoden, noden lyfts.

Om implementeringsmetoden är null:

  • Om båda expression. Skriv och type är inte nullbara, noden lyfts inte.

  • Annars lyfts noden.

Gäller för

Convert(Expression, Type, MethodInfo)

Skapar en UnaryExpression som representerar en konverteringsåtgärd som implementeringsmetoden har angetts för.

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

Parametrar

expression
Expression

En Expression som egenskapen Operand ska vara lika med.

type
Type

A Type för att ange egenskapen Type lika med.

method
MethodInfo

A MethodInfo för att ange egenskapen Method lika med.

Returer

En UnaryExpression som har NodeType egenskapen lika med Convert och Operandegenskaperna , Typeoch Method som är inställda på de angivna värdena.

Undantag

expression eller type är null.

method är inte null och metoden den representerar returnerar void, är inte static (Shared i Visual Basic), eller tar inte exakt ett argument.

Ingen konverteringsoperator definieras mellan expression. Skriv och type.

-eller-

expression. Typen kan inte tilldelas till argumenttypen för metoden som representeras av method.

-eller-

Returtypen för metoden som representeras av method kan inte tilldelas till type.

-eller-

expression. Skriv eller type är en nullbar värdetyp och motsvarande värdetyp som inte kan nulleras är inte lika med argumenttypen eller returtypen för den metod som representeras av method.

Mer än en metod som matchar beskrivningen method hittades.

Kommentarer

Egenskapen Method för resultatet UnaryExpression är inställd på implementeringsmetoden. Egenskapen IsLiftedToNull är false. Om noden lyfts IsLifted är .true Annars är falsedet .

Implementeringsmetod

Följande regler avgör implementeringsmetoden för åtgärden:

  • Om metoden inte nullär är det implementeringsmetoden. Den måste representera en icke-void-metod static (Shared i Visual Basic) som tar ett argument.

  • Annars, om någon av expressiondem . Skriv eller type är en användardefinierad typ som definierar en implicit eller explicit konverteringsoperator, som representerar den MethodInfo operatorn är implementeringsmetoden.

  • Annars:

    • Om båda expression. Skriv och type representera numeriska eller booleska typer, eller nullbara eller icke-nullbara uppräkningstyper, implementeringsmetoden är null.

    • Om någon av expressiondem . Skriv eller type är en referenstyp och det finns en explicit boxning, avboxning eller referenskonvertering från expression. Skriv till type, implementeringsmetoden är null.

Lyft jämfört med icke-lyft

Om implementeringsmetoden inte nullär :

  • Om expression. Typen kan tilldelas till argumenttypen för implementeringsmetoden och returtypen för implementeringsmetoden kan tilldelas till type, noden lyfts inte.

  • Om antingen eller båda av expression. Skriv eller type är en nullbar värdetyp och motsvarande icke-nullbara värdetyper är lika med argumenttypen och returtypen för implementeringsmetoden, noden lyfts.

Om implementeringsmetoden är null:

  • Om båda expression. Skriv och type är inte nullbara, noden lyfts inte.

  • Annars lyfts noden.

Gäller för