Expression.Convert Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.
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 ellertypeä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 ochtyperepresentera numeriska eller booleska typer, eller nullbara eller icke-nullbara uppräkningstyper, implementeringsmetoden ärnull.Om någon av
expressiondem . Skriv ellertypeär en referenstyp och det finns en explicit boxning, avboxning eller referenskonvertering frånexpression. Skriv tilltype, implementeringsmetoden ärnull.
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 tilltype, noden lyfts inte.Om en eller båda av
expression. Skriv ellertypeä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 ochtypeä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.
- 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-metodstatic(Sharedi Visual Basic) som tar ett argument.Annars, om någon av
expressiondem . Skriv ellertypeä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 ochtyperepresentera numeriska eller booleska typer, eller nullbara eller icke-nullbara uppräkningstyper, implementeringsmetoden ärnull.Om någon av
expressiondem . Skriv ellertypeär en referenstyp och det finns en explicit boxning, avboxning eller referenskonvertering frånexpression. Skriv tilltype, implementeringsmetoden ärnull.
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 tilltype, noden lyfts inte.Om antingen eller båda av
expression. Skriv ellertypeä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 ochtypeär inte nullbara, noden lyfts inte.Annars lyfts noden.