Expression.Convert Methode

Definitie

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.

type
Type

A Type om de Type 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 of type is 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 en type vertegenwoordig numerieke of Booleaanse typen, of nullable of niet-nullable opsommingstypen, de implementatiemethode is null.

    • Als een van expressionbeide . Typ of type is een verwijzingstype en er bestaat een expliciete boksing, uitboxing of verwijzingsconversie. expression Type to type, de implementatiemethode is null.

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 toegewezen type, het knooppunt wordt niet opgeheven.

  • Als een of beide van expression. Typ of type is 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 en type zijn 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.

type
Type

A Type om de Type 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 methode static (Shared in Visual Basic) vertegenwoordigen die één argument gebruikt.

  • Als dat niet expressionhet geval is. Typ of type is 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 en type vertegenwoordig numerieke of Booleaanse typen, of nullable of niet-nullable opsommingstypen, de implementatiemethode is null.

    • Als een van expressionbeide . Typ of type is een verwijzingstype en er bestaat een expliciete boksing, uitboxing of verwijzingsconversie. expression Type to type, de implementatiemethode is null.

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 toegewezen type, het knooppunt wordt niet opgeheven.

  • Als of beide van expression. Typ of type 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 en type zijn niet nullable, het knooppunt wordt niet opgeheven.

  • Anders wordt het knooppunt opgeheven.

Van toepassing op