Délégué (C#) Delegate
Un pointeur de fonction typé : une variable qui contient une méthode et qu'on peut appeler comme si c'était la méthode elle-même.
On le déclare comme un type à part entière — delegate int Op(int a, int b); — et on peut ensuite lui affecter n'importe quelle méthode de signature compatible. Contrairement à un pointeur de fonction C, il emporte l'instance à laquelle la méthode appartient, et le compilateur vérifie la signature à votre place. Les délégués sont arrivés avec .NET 1.0 en 2002 et ont rendu la gestion d'événements supportable dans Windows Forms.
Ils sont multicast : un même délégué peut contenir une liste d'invocation de plusieurs méthodes, et += y ajoute un élément. C'est tout le fondement du mot-clé event. Depuis C# 3.0, rares sont les développeurs qui déclarent encore leurs propres types de délégués — les génériques Func<> et Action<> plus les expressions lambda couvrent presque tout, et LINQ repose entièrement dessus.