Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Expression<TDelegate> classe

 

Date de publication : novembre 2016

Représente une expression lambda fortement typée en tant que structure de données sous la forme d’une arborescence d’expression. Cette classe ne peut pas être héritée.

Espace de noms:   System.Linq.Expressions
Assembly:  System.Core (dans System.Core.dll)

System.Object
  System.Linq.Expressions.Expression
    System.Linq.Expressions.LambdaExpression
      System.Linq.Expressions.Expression<TDelegate>

public sealed class Expression<TDelegate> : LambdaExpression

Paramètres de type

TDelegate

Le type du délégué qui le Expression<TDelegate> représente.

NomDescription
System_CAPS_pubpropertyBody

Obtient le corps de l’expression lambda.(Hérité de LambdaExpression.)

System_CAPS_pubpropertyCanReduce

Indique que le nœud peut être réduit à un nœud plus simple. Si la valeur retournée est true, Reduce() peut être appelé pour produire la forme réduite.(Hérité de Expression.)

System_CAPS_pubpropertyName

Obtient le nom de l’expression lambda.(Hérité de LambdaExpression.)

System_CAPS_pubpropertyNodeType

Retourne le type de nœud de cette Expression.(Hérité de LambdaExpression.)

System_CAPS_pubpropertyParameters

Obtient les paramètres de l’expression lambda.(Hérité de LambdaExpression.)

System_CAPS_pubpropertyReturnType

Obtient le type de retour de l’expression lambda.(Hérité de LambdaExpression.)

System_CAPS_pubpropertyTailCall

Obtient la valeur qui indique si l’expression lambda doit être compilée avec l’optimisation d’appel tail.(Hérité de LambdaExpression.)

System_CAPS_pubpropertyType

Obtient le type statique de l'expression que ce Expression représente.(Hérité de LambdaExpression.)

NomDescription
System_CAPS_protmethodAccept(ExpressionVisitor)

Distribue à la méthode de visite spécifique à ce type de nœud. Par exemple, MethodCallExpression appelle VisitMethodCall.(Hérité de Expression.)

System_CAPS_pubmethodCompile()

Compile l’expression lambda décrite par l’arborescence d’expression en code exécutable et produit un délégué qui représente l’expression lambda.

System_CAPS_pubmethodCompile(DebugInfoGenerator)

Produit un délégué qui représente l’expression lambda.

System_CAPS_pubmethodCompileToMethod(MethodBuilder)

Compile le lambda dans une définition de méthode.(Hérité de LambdaExpression.)

System_CAPS_pubmethodCompileToMethod(MethodBuilder, DebugInfoGenerator)

Compile le lambda dans une définition de méthode et les informations de débogage personnalisé.(Hérité de LambdaExpression.)

System_CAPS_pubmethodEquals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.(Hérité de Object.)

System_CAPS_pubmethodGetHashCode()

Fait office de fonction de hachage par défaut.(Hérité de Object.)

System_CAPS_pubmethodGetType()

Obtient le Type de l'instance actuelle.(Hérité de Object.)

System_CAPS_pubmethodReduce()

Réduit le nœud en une expression plus simple. Si CanReduce retourne la valeur true, cela doit retourner une expression valide. Cette méthode peut retourner un autre nœud qui doit lui-même être réduit.(Hérité de Expression.)

System_CAPS_pubmethodReduceAndCheck()

Réduit le nœud en une expression plus simple. Si CanReduce retourne la valeur true, cela doit retourner une expression valide. Cette méthode peut retourner un autre nœud qui doit lui-même être réduit.(Hérité de Expression.)

System_CAPS_pubmethodReduceExtensions()

Réduit l’expression à un type de nœud connu (qui n’est pas un nœud Extension) ou retourne simplement l’expression s’il s’agit d’un type déjà connu.(Hérité de Expression.)

System_CAPS_pubmethodToString()

Retourne une représentation textuelle de Expression.(Hérité de Expression.)

System_CAPS_pubmethodUpdate(Expression, IEnumerable<ParameterExpression>)

Crée une expression qui est semblable à celle-ci, mais en utilisant les enfants fournis. Si tous les enfants sont identiques, cette expression est retournée.

System_CAPS_protmethodVisitChildren(ExpressionVisitor)

Réduit le nœud puis appelle le délégué visiteur sur l'expression réduite. La méthode lève une exception si le nœud n'est pas réductible.(Hérité de Expression.)

Lorsqu’une expression lambda est assignée à une variable, un champ ou un paramètre dont le type est Expression<TDelegate>, le compilateur génère des instructions pour générer une arborescence d’expression.

System_CAPS_noteRemarque

Une conversion à partir d’une expression lambda en type Expression<D> (Expression(Of D) en Visual Basic) existe si une conversion de l’expression lambda à un délégué du type D existe. Toutefois, la conversion peut échouer, par exemple, si le corps de l’expression lambda est un bloc. Cela signifie que les délégués et les arborescences d’expression se comportent de la même façon en ce qui concerne la résolution de surcharge.

L’arborescence d’expression est une représentation de données en mémoire de l’expression lambda. L’arborescence d’expression rend la structure de l’expression lambda transparente et explicite. Tout comme vous le feriez avec toute autre structure de données, vous pouvez interagir avec les données dans l’arborescence d’expression.

La possibilité de traiter les expressions comme des structures de données permet aux API de recevoir du code utilisateur dans un format qui peut être inspecté, transformé et traité de manière personnalisée. Par exemple, le LINQ to SQL implémentation d’un accès aux données utilise cette fonctionnalité pour traduire des arborescences d’expression en instructions Transact-SQL qui peuvent être évaluées par la base de données.

De nombreux opérateurs de requête standard définis dans la Queryable classe possède un ou plusieurs paramètres de type Expression<TDelegate>.

Le NodeType d’un Expression<TDelegate> est Lambda.

Utilisez la Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>) ou Lambda<TDelegate>(Expression, ParameterExpression[]) pour créer un Expression<TDelegate> objet.

L’exemple de code suivant montre comment représenter une expression lambda à la fois en tant que code exécutable sous la forme d’un délégué et les données sous la forme d’une arborescence d’expression. Il montre également comment reconvertir l’arborescence d’expression en code exécutable à l’aide de la Compile méthode.


// Lambda expression as executable code.
Func<int, bool> deleg = i => i < 5;
// Invoke the delegate and display the output.
Console.WriteLine("deleg(4) = {0}", deleg(4));

// Lambda expression as data in the form of an expression tree.
System.Linq.Expressions.Expression<Func<int, bool>> expr = i => i < 5;
// Compile the expression tree into executable code.
Func<int, bool> deleg2 = expr.Compile();
// Invoke the method and print the output.
Console.WriteLine("deleg2(4) = {0}", deleg2(4));

/*  This code produces the following output:

    deleg(4) = True
    deleg2(4) = True
*/

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 3.5
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: