Expression.Convert Méthode

Définition

Crée un UnaryExpression qui représente une opération de conversion de type.Creates a UnaryExpression that represents a type conversion operation.

Surcharges

Convert(Expression, Type)

Crée un UnaryExpression qui représente une opération de conversion de type.Creates a UnaryExpression that represents a type conversion operation.

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.Creates a UnaryExpression that represents a conversion operation for which the implementing method is specified.

Convert(Expression, Type)

Crée un UnaryExpression qui représente une opération de conversion de type.Creates a UnaryExpression that represents a type conversion operation.

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

Paramètres

expression
Expression

Expression auquel la propriété Operand doit être égale.An Expression to set the Operand property equal to.

type
Type

Type auquel la propriété Type doit être égale.A Type to set the Type property equal to.

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.A UnaryExpression that has the NodeType property equal to Convert and the Operand and Type properties set to the specified values.

Exceptions

expression ou type a la valeur null.expression or type is null.

Aucun opérateur de conversion n'est défini entre expression.Type et type.No conversion operator is defined between expression.Type and type.

Exemples

L’exemple de code suivant montre comment créer une expression qui représente une opération de conversion de type.The following code example shows how to create an expression that represents a type conversion operation.

// 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 propriété du résultant UnaryExpression a la valeur de la méthode d’implémentation. MethodThe Method property of the resulting UnaryExpression is set to the implementing method. La propriété IsLiftedToNull est false.The IsLiftedToNull property is false. Si le nœud est levé, IsLifted est. trueIf the node is lifted, IsLifted is true. Sinon, il s'agit de false.Otherwise, it is false.

Implémentation de la méthodeImplementing Method

Les règles suivantes déterminent la méthode d’implémentation pour l’opération :The following rules determine the implementing method for the operation:

  • Si l' expressionune ou l’autre. Type ou type est un type défini par l’utilisateur qui définit un opérateur de conversion implicite ou MethodInfo explicite, le qui représente cet opérateur est la méthode d’implémentation.If either expression.Type or type is a user-defined type that defines an implicit or explicit conversion operator, the MethodInfo that represents that operator is the implementing method.

  • Sinon :Otherwise:

    • Si les expressiondeux. Tapez et type représentent des types numériques ou booléens, ou des types énumération Nullable ou non Nullable, la nullméthode d’implémentation est.If both expression.Type and type represent numeric or Boolean types, or nullable or non-nullable enumeration types, the implementing method is null.

    • Si l' expressionune ou l’autre. Type ou type est un type référence et une conversion boxing, unboxing ou référence explicite existe à partir expressionde. Tapez sur type, la méthode d’implémentation nullest.If either expression.Type or type is a reference type and an explicit boxing, unboxing, or reference conversion exists from expression.Type to type, the implementing method is null.

Levée et non levéeLifted versus Non-Lifted

Si la méthode d’implémentation n' nullest pas :If the implementing method is not null:

  • Si expression. Le type peut être assigné au type d’argument de la méthode d’implémentation et le type de retour de la méthode d’implémentation typepeut être assigné à, le nœud n’est pas levé.If expression.Type is assignable to the argument type of the implementing method and the return type of the implementing method is assignable to type, the node is not lifted.

  • Si l’un des expressionéléments ou les deux. Type ou type est un type valeur Nullable et les types valeur non Nullable correspondants sont égaux au type d’argument et au type de retour de la méthode d’implémentation, respectivement, le nœud est levé.If one or both of expression.Type or type is a nullable value type and the corresponding non-nullable value types are equal to the argument type and the return type of the implementing method respectively, the node is lifted.

Si la méthode d’implémentation nullest :If the implementing method is null:

  • Si les expressiondeux. Type et type ne peuvent pas être null, le nœud n’est pas levé.If both expression.Type and type are non-nullable, the node is not lifted.

  • Dans le cas contraire, le nœud est levé.Otherwise the node is lifted.

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.Creates a UnaryExpression that represents a conversion operation for which the implementing method is specified.

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

Paramètres

expression
Expression

Expression auquel la propriété Operand doit être égale.An Expression to set the Operand property equal to.

type
Type

Type auquel la propriété Type doit être égale.A Type to set the Type property equal to.

method
MethodInfo

MethodInfo auquel la propriété Method doit être égale.A MethodInfo to set the Method property equal to.

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.A UnaryExpression that has the NodeType property equal to Convert and the Operand, Type, and Method properties set to the specified values.

Exceptions

expression ou type est null.expression or type is 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.method is not null and the method it represents returns void, is not static (Shared in Visual Basic), or does not take exactly one argument.

Aucun opérateur de conversion n'est défini entre expression.Type et type.No conversion operator is defined between expression.Type and type.

- ou --or- expression.Type ne peut pas être assigné au type d'argument de la méthode représentée par method.expression.Type is not assignable to the argument type of the method represented by method.

- ou --or- Le type de retour de la méthode représentée par method ne peut pas être assigné à type.The return type of the method represented by method is not assignable to type.

- ou --or- 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.expression.Type or type is a nullable value type and the corresponding non-nullable value type does not equal the argument type or the return type, respectively, of the method represented by method.

Plusieurs méthodes correspondant à la description method ont été trouvées.More than one method that matches the method description was found.

Remarques

La propriété du résultant UnaryExpression a la valeur de la méthode d’implémentation. MethodThe Method property of the resulting UnaryExpression is set to the implementing method. La propriété IsLiftedToNull est false.The IsLiftedToNull property is false. Si le nœud est levé, IsLifted est. trueIf the node is lifted, IsLifted is true. Sinon, il s'agit de false.Otherwise, it is false.

Implémentation de la méthodeImplementing Method

Les règles suivantes déterminent la méthode d’implémentation pour l’opération :The following rules determine the implementing method for the operation:

  • Si la méthode n' nullest pas, il s’agit de la méthode d’implémentation.If method is not null, it is the implementing method. Il doit représenter une méthode non void, static (Shared dans Visual Basic) qui prend un argument.It must represent a non-void, static (Shared in Visual Basic) method that takes one argument.

  • Sinon, si l' expressionune des deux. Type ou type est un type défini par l’utilisateur qui définit un opérateur de conversion implicite ou MethodInfo explicite, le qui représente cet opérateur est la méthode d’implémentation.Otherwise, if either expression.Type or type is a user-defined type that defines an implicit or explicit conversion operator, the MethodInfo that represents that operator is the implementing method.

  • Sinon :Otherwise:

    • Si les expressiondeux. Tapez et type représentent des types numériques ou booléens, ou des types énumération Nullable ou non Nullable, la nullméthode d’implémentation est.If both expression.Type and type represent numeric or Boolean types, or nullable or non-nullable enumeration types, the implementing method is null.

    • Si l' expressionune ou l’autre. Type ou type est un type référence et une conversion boxing, unboxing ou référence explicite existe à partir expressionde. Tapez sur type, la méthode d’implémentation nullest.If either expression.Type or type is a reference type and an explicit boxing, unboxing, or reference conversion exists from expression.Type to type, the implementing method is null.

Levée et non levéeLifted versus Non-Lifted

Si la méthode d’implémentation n' nullest pas :If the implementing method is not null:

  • Si expression. Le type peut être assigné au type d’argument de la méthode d’implémentation et le type de retour de la méthode d’implémentation typepeut être assigné à, le nœud n’est pas levé.If expression.Type is assignable to the argument type of the implementing method and the return type of the implementing method is assignable to type, the node is not lifted.

  • Si l’un ou l' expressionautre ou les deux. Type ou type est un type valeur Nullable et les types valeur non Nullable correspondants sont égaux au type d’argument et au type de retour de la méthode d’implémentation, respectivement, le nœud est levé.If either or both of expression.Type or type are a nullable value type and the corresponding non-nullable value types are equal to the argument type and the return type of the implementing method respectively, the node is lifted.

Si la méthode d’implémentation nullest :If the implementing method is null:

  • Si les expressiondeux. Type et type ne peuvent pas être null, le nœud n’est pas levé.If both expression.Type and type are non-nullable, the node is not lifted.

  • Dans le cas contraire, le nœud est levé.Otherwise the node is lifted.

S’applique à