Maison  >  Article  >  développement back-end  >  Les mots-clés délégués et la notation lambda sont-ils fonctionnellement identiques en C# ?

Les mots-clés délégués et la notation lambda sont-ils fonctionnellement identiques en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 01:32:03925parcourir

Are delegate keywords and lambda notation functionally identical in C#?

Mot clé délégué vs notation Lambda

En C#, une question courante se pose concernant l'équivalence de deux expressions lambda :

<code class="csharp">delegate { x = 0; }

() = > { x = 0 }</code>

Sont-ils fonctionnellement identiques une fois compilés ?

Réponse :
En bref, non. Ils sont syntaxiquement équivalents, mais diffèrent par le type de délégué résultant.

Approfondir :
Alors que le mot-clé délégué crée traditionnellement des délégués anonymes, l'utilisation d'un lambda avec le mot-clé délégué génère un délégué anonyme également. Cependant, l'attribution d'un lambda à un type Expression crée à la place un arbre d'expression, qui peut ensuite être compilé en un délégué anonyme.

Considérations avancées :
Le choix entre ces notations dépend de l'utilisation prévue :

  • Attribuer au type de délégué (par exemple, Func, Action) : utiliser des délégués anonymes pour la génération de code d'exécution.
  • Attribuer au type d'expression : utiliser des arborescences d'expression pour une exécution différée ou génération de code personnalisé.

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!

Déclaration:
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