Expression.Convert Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee maakt u een UnaryExpression bewerking voor een typeconversie.
Overloads
| Name | Description |
|---|---|
| Convert(Expression, Type) |
Hiermee maakt u een UnaryExpression bewerking voor een typeconversie. |
| Convert(Expression, Type, MethodInfo) |
Hiermee maakt u een UnaryExpression conversiebewerking waarvoor de implementatiemethode is opgegeven. |
Convert(Expression, Type)
Hiermee maakt u een UnaryExpression bewerking voor een typeconversie.
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
Parameters
- expression
- Expression
Een Expression om de Operand eigenschap in te stellen die gelijk is aan.
Retouren
Een UnaryExpression met de NodeType eigenschap gelijk aan Convert en de Operand eigenschappen die Type zijn ingesteld op de opgegeven waarden.
Uitzonderingen
expression of type is null.
Er is geen conversieoperator gedefinieerd tussen expression. Typ en type.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u een expressie maakt die een typeconversiebewerking vertegenwoordigt.
// 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
Opmerkingen
De Method eigenschap van het resultaat UnaryExpression wordt ingesteld op de implementatiemethode. De eigenschap IsLiftedToNull is false. Als het knooppunt wordt opgeheven, IsLifted is truedit . Anders is falsehet .
Implementatiemethode
De volgende regels bepalen de implementatiemethode voor de bewerking:
Als een van
expressionbeide . Typ oftypeis een door de gebruiker gedefinieerd type dat een impliciete of expliciete conversieoperator definieert, de MethodInfo operator die de implementatiemethode vertegenwoordigt.Anders:
Als beide
expression. Typ entypevertegenwoordig numerieke of Booleaanse typen, of nullable of niet-nullable opsommingstypen, de implementatiemethode isnull.Als een van
expressionbeide . Typ oftypeis een verwijzingstype en er bestaat een expliciete boksing, uitboxing of verwijzingsconversie.expressionType totype, de implementatiemethode isnull.
Opgeheven versus niet-opgeheven
Als de implementatiemethode niet null is:
Als
expression. Het type kan worden toegewezen aan het argumenttype van de implementatiemethode en het retourtype van de implementatiemethode kan worden toegewezentype, het knooppunt wordt niet opgeheven.Als een of beide van
expression. Typ oftypeis een null-waardetype en de bijbehorende niet-null-waardetypen zijn gelijk aan het argumenttype en het retourtype van respectievelijk de implementatiemethode, het knooppunt wordt opgeheven.
Als de implementatiemethode het volgende is null:
Als beide
expression. Type entypezijn niet nullable, het knooppunt wordt niet opgeheven.Anders wordt het knooppunt opgeheven.
Van toepassing op
Convert(Expression, Type, MethodInfo)
Hiermee maakt u een UnaryExpression conversiebewerking waarvoor de implementatiemethode is opgegeven.
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
Parameters
- expression
- Expression
Een Expression om de Operand eigenschap in te stellen die gelijk is aan.
- method
- MethodInfo
A MethodInfo om de Method eigenschap in te stellen die gelijk is aan.
Retouren
Een UnaryExpression met de NodeType eigenschap gelijk aan Convert en de Operand, Typeen Method eigenschappen die zijn ingesteld op de opgegeven waarden.
Uitzonderingen
expression of type is null.
method is niet null en de methode die deze vertegenwoordigt, retourneert void, is niet static (Shared in Visual Basic) of neemt niet precies één argument.
Er is geen conversieoperator gedefinieerd tussen expression. Typ en type.
– of –
expression. Het type kan niet worden toegewezen aan het argumenttype van de methode die wordt vertegenwoordigd door method.
– of –
Het retourtype van de methode die wordt vertegenwoordigd door method , kan niet worden toegewezen aan type.
– of –
expression. Typ of type is een null-waardetype en het overeenkomstige niet-null-waardetype is niet gelijk aan het argumenttype of het retourtype, respectievelijk, van de methode die wordt vertegenwoordigd door method.
Er is meer dan één methode gevonden die overeenkomt met de method beschrijving.
Opmerkingen
De Method eigenschap van het resultaat UnaryExpression wordt ingesteld op de implementatiemethode. De eigenschap IsLiftedToNull is false. Als het knooppunt wordt opgeheven, IsLifted is truedit . Anders is falsehet .
Implementatiemethode
De volgende regels bepalen de implementatiemethode voor de bewerking:
Als de methode niet
nullis, is dit de implementatiemethode. Het moet een niet-ongeldige methodestatic(Sharedin Visual Basic) vertegenwoordigen die één argument gebruikt.Als dat niet
expressionhet geval is. Typ oftypeis een door de gebruiker gedefinieerd type dat een impliciete of expliciete conversieoperator definieert, de MethodInfo operator die de implementatiemethode vertegenwoordigt.Anders:
Als beide
expression. Typ entypevertegenwoordig numerieke of Booleaanse typen, of nullable of niet-nullable opsommingstypen, de implementatiemethode isnull.Als een van
expressionbeide . Typ oftypeis een verwijzingstype en er bestaat een expliciete boksing, uitboxing of verwijzingsconversie.expressionType totype, de implementatiemethode isnull.
Opgeheven versus niet-opgeheven
Als de implementatiemethode niet null is:
Als
expression. Het type kan worden toegewezen aan het argumenttype van de implementatiemethode en het retourtype van de implementatiemethode kan worden toegewezentype, het knooppunt wordt niet opgeheven.Als of beide van
expression. Typ oftypeeen null-waardetype en de bijbehorende niet-null-waardetypen zijn gelijk aan het argumenttype en het retourtype van respectievelijk de implementatiemethode, het knooppunt wordt opgeheven.
Als de implementatiemethode het volgende is null:
Als beide
expression. Type entypezijn niet nullable, het knooppunt wordt niet opgeheven.Anders wordt het knooppunt opgeheven.