Partager via


Expression.Convert Méthode

Définition

Crée un UnaryExpression qui représente une opération de conversion de type.

Surcharges

Convert(Expression, Type)

Crée un UnaryExpression qui représente une opération de conversion de type.

Convert(Expression, Type, MethodInfo)

Crée un UnaryExpression qui représente une opération de conversion pour laquelle la méthode d'implémentation est spécifiée.

Convert(Expression, Type)

Source:
UnaryExpression.cs
Source:
UnaryExpression.cs
Source:
UnaryExpression.cs

Crée un UnaryExpression qui représente une opération de conversion de type.

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

Paramètres

expression
Expression

Expression auquel la propriété Operand doit être égale.

type
Type

Type auquel la propriété Type doit être égale.

Retours

UnaryExpression dont la propriété NodeType est égale à Convert et dont les propriétés Operand et Type ont les valeurs spécifiées.

Exceptions

expression ou type est null.

Aucun opérateur de conversion n'est défini entre expression.Type et type.

Exemples

L’exemple de code suivant montre comment créer une expression qui représente une opération de conversion de type.

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

Remarques

La Method propriété du résultat UnaryExpression est définie sur la méthode d’implémentation. La propriété IsLiftedToNull a la valeur false. Si le nœud est levé, IsLifted est true. Sinon, c’est false.

Implémentation de la méthode

Les règles suivantes déterminent la méthode d’implémentation de l’opération :

  • Si l’un ou l’autre . expression Type ou type est un type défini par l’utilisateur qui définit un opérateur de conversion implicite ou explicite, MethodInfo qui représente cet opérateur est la méthode d’implémentation.

  • Sinon :

    • Si les deux . expression Tapez et type représentent des types numériques ou booléens, ou des types d’énumération nullables ou non nullables, la méthode d’implémentation est null.

    • Si l’un ou l’autre . expression Le type ou type est un type de référence et une conversion de boxe, d’unboxing ou de référence explicite existe à partir de expression. Tapez à type, la méthode d’implémentation est null.

Lifted versus Non Lifted

Si la méthode d’implémentation n’est pas null:

  • Si expression. Type est assignable au type d’argument de la méthode d’implémentation et le type de retour de la méthode d’implémentation est assignable à type, le nœud n’est pas levé.

  • Si l’un ou les deux de expression. Type ou type est un type de valeur nullable et les types de valeurs non nullables correspondants sont égaux au type d’argument et au type de retour de la méthode d’implémentation, le nœud est supprimé.

Si la méthode d’implémentation est null:

  • Si les deux . expression Tapez et type ne sont pas nullables, le nœud n’est pas levé.

  • Sinon, le nœud est levé.

S’applique à

Convert(Expression, Type, MethodInfo)

Source:
UnaryExpression.cs
Source:
UnaryExpression.cs
Source:
UnaryExpression.cs

Crée un UnaryExpression qui représente une opération de conversion pour laquelle la méthode d'implémentation est spécifiée.

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

Paramètres

expression
Expression

Expression auquel la propriété Operand doit être égale.

type
Type

Type auquel la propriété Type doit être égale.

method
MethodInfo

MethodInfo auquel la propriété Method doit être égale.

Retours

UnaryExpression dont la propriété NodeType est égale à Convert et dont les propriétés Operand, Type et Method ont les valeurs spécifiées.

Exceptions

expression ou type est null.

method n'est pas null et la méthode représentée retourne void, n'est pas static (Shared en Visual Basic) ou ne prend pas un argument exactement.

Aucun opérateur de conversion n'est défini entre expression.Type et type.

- ou -

expression.Type ne peut pas être assigné au type d'argument de la méthode représentée par method.

- ou -

Le type de retour de la méthode représentée par method ne peut pas être assigné à type.

- ou -

expression.Type ou type est un type valeur Nullable et le type valeur autre que Nullable correspondant n'est pas égal au type d'argument ou au type de retour, respectivement, de la méthode représentée par method.

Plusieurs méthodes correspondant à la description method ont été trouvées.

Remarques

La Method propriété du résultat UnaryExpression est définie sur la méthode d’implémentation. La propriété IsLiftedToNull a la valeur false. Si le nœud est levé, IsLifted est true. Sinon, c’est false.

Implémentation de la méthode

Les règles suivantes déterminent la méthode d’implémentation de l’opération :

  • Si la méthode n’est pas null, il s’agit de la méthode d’implémentation. Il doit représenter une méthode non void ( staticShared en Visual Basic) qui prend un argument.

  • Sinon, si l’un ou l’autre expression. Type ou type est un type défini par l’utilisateur qui définit un opérateur de conversion implicite ou explicite, MethodInfo qui représente cet opérateur est la méthode d’implémentation.

  • Sinon :

    • Si les deux . expression Tapez et type représentent des types numériques ou booléens, ou des types d’énumération nullables ou non nullables, la méthode d’implémentation est null.

    • Si l’un ou l’autre . expression Le type ou type est un type de référence et une conversion de boxe, d’unboxing ou de référence explicite existe à partir de expression. Tapez à type, la méthode d’implémentation est null.

Lifted versus Non Lifted

Si la méthode d’implémentation n’est pas null:

  • Si expression. Type est assignable au type d’argument de la méthode d’implémentation et le type de retour de la méthode d’implémentation est assignable à type, le nœud n’est pas levé.

  • Si ou les deux de expression. Type ou type sont un type de valeur nullable et les types de valeurs non nullables correspondants sont égaux au type d’argument et au type de retour de la méthode d’implémentation respectivement, le nœud est supprimé.

Si la méthode d’implémentation est null:

  • Si les deux . expression Tapez et type ne sont pas nullables, le nœud n’est pas levé.

  • Sinon, le nœud est levé.

S’applique à