82 votes

Que sont les "fermetures" en C# ?

Duplicata

Les fermetures en .NET

Que sont les fermetures en C# ?

0 votes

4 votes

Peut-être en double, mais la réponse acceptée est particulièrement succincte.

1 votes

Existe-t-il des exemples pratiques d'utilisation des fermetures ?

116voto

cgreeno Points 17379

A fermeture en C# prend la forme d'un délégué en ligne/ méthode anonyme . A fermeture est attachée à sa méthode parentale, ce qui signifie que les variables définies dans le corps de la méthode parentale peuvent être référencées à l'intérieur de la méthode anonyme. Il existe un excellent Article de blog à ce sujet.

Exemple :

public Person FindById(int id)
{
    return this.Find(delegate(Person p)
    {
        return (p.Id == id);
    });
}

Vous pouvez également consulter Martin Fowler o Jon Skeet blogs. Je suis sûr que vous pourrez obtenir une analyse plus approfondie de la part d'au moins l'un d'entre eux....

Exemple pour C# 6 :

public Person FindById(int id)
{
    return this.Find(p => p.Id == id);
}

ce qui équivaut à

public Person FindById(int id) => this.Find(p => p.Id == id);

5 votes

Quelqu'un a une mise à jour de c# 6 ou 7 pour cette réponse ?

0 votes

@l--''''''---------'''''''''''' Et voilà !

0 votes

@NickBull merci beaucoup. maintenant que c'est 2 ans plus tard, je cherche en fait la dernière et meilleure version, autour de 8.3 ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X