Maison > développement back-end > C++ > Comment les fermetures C# permettent-elles l'accès aux variables à partir des étendues englobantes ?

Comment les fermetures C# permettent-elles l'accès aux variables à partir des étendues englobantes ?

Barbara Streisand
Libérer: 2025-01-08 08:11:42
original
780 Les gens l'ont consulté

How Do C# Closures Enable Access to Variables from Enclosing Scopes?

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);
    });
}
Copier après la connexion

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);
}
Copier après la connexion

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal