Compréhension approfondie des fermetures C#
Les fermetures en C# sont une fonctionnalité puissante qui permet aux fonctions imbriquées d'accéder aux variables dans leur portée englobante. Les fermetures sont la base des délégués en ligne .NET et des méthodes anonymes, permettant aux fonctions anonymes de conserver les variables de la méthode parent.
Les fermetures C# apparaissent généralement sous la forme de délégués en ligne ou de méthodes anonymes. Lorsqu'elle est définie dans une méthode parent, cette fonction anonyme peut accéder aux variables déclarées dans le corps de sa méthode parent.
Demande de clôture
L'exemple suivant montre comment la méthode FindById
utilise les fermetures pour rechercher des Person
objets en fonction de leur identifiant :
public Person FindById(int id) { return this.Find(delegate(Person p) { return (p.Id == id); }); }
La fonction anonyme agit ici comme un prédicat, qui évalue l'objet Person
pour déterminer si son ID correspond au paramètre id
fourni.
Expression lambda
En C# 6 et versions ultérieures, les expressions Lambda fournissent une syntaxe plus concise pour définir les fermetures :
public Person FindById(int id) { return this.Find(p => p.Id == id); }
Cette expression Lambda est équivalente au délégué anonyme ci-dessus et constitue également une fermeture.
Résumé
Les fermetures en C# sont un mécanisme puissant qui permet aux fonctions imbriquées d'accéder aux variables dans une portée englobante. En tirant parti de cette corrélation entre les fonctions parent et enfant, les fermetures nous permettent de créer des applications plus flexibles et plus faciles à maintenir. Que vous choisissiez des méthodes anonymes traditionnelles ou des expressions lambda modernes, les fermetures peuvent améliorer vos compétences en programmation C#.
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!