Maison > développement back-end > C++ > le corps du texte

Existe-t-il une différence fonctionnelle entre la notation Lambda et le mot-clé délégué en C# ?

DDD
Libérer: 2024-10-29 06:43:31
original
481 Les gens l'ont consulté

Is There a Functional Difference Between Lambda Notation and the Delegate Keyword in C#?

Invocation de délégué : notation lambda et mot-clé de délégué

En C#, les expressions lambda et les mots-clés de délégué offrent une syntaxe alternative pour créer des méthodes anonymes. Une fois compilées, y a-t-il une différence perceptible entre les deux notations suivantes ?

delegate { x = 0; }
Copier après la connexion

et

() => { x = 0; }
Copier après la connexion

Réponse : aucune différence fonctionnelle

Au niveau binaire, la notation lambda et le mot-clé délégué produisent des délégués anonymes équivalents. Ils peuvent être invoqués de manière interchangeable et présenter le même comportement d'exécution.

Considérations supplémentaires :

  • Lors de l'attribution d'un lambda à un type de délégué (par exemple, Func ou Action ), un délégué anonyme est directement créé.
  • L'attribution d'un lambda à un type Expression, en revanche, produit un arbre d'expression au lieu d'un délégué anonyme. Cet arbre d'expression peut ensuite être compilé pour créer un délégué anonyme.

Arbres d'expression et LINQ :

Dans le contexte de LINQ, la compréhension des arbres d'expression est cruciale . Les opérations LINQ en mémoire (par exemple, en utilisant Enumerable) emploient des délégués, tandis que les opérations LINQ avec des sources de données externes (par exemple, SQL) utilisent des arbres d'expression.

Pour plus d'informations et de ressources sur les arbres d'expression, reportez-vous aux liens suivants :

  • [System.Linq.Expression.Expression(TDelegate)](https://docs.microsoft.com/en-us/dotnet/api/system.linq.expressions.expression)
  • [Linq en mémoire avec délégués (System.Func) vs Linq to SQL avec expressions (System.Linq.Queryable)](https://stackoverflow.com/questions/9289889/linq-in-memory -with-delegates-system-func-vs-linq-to-sql-with-expressions-syst)
  • [Une explication de ScottGu](https://weblogs.asp.net/scottgu/a- anticipation de Linq)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal