Delegate (C#)
Un puntatore a funzione type-safe: una variabile che contiene un metodo e può essere chiamata come se fosse il metodo.
Si dichiara come tipo a sé, delegate int Op(int a, int b);, e gli si può poi assegnare qualsiasi metodo con la firma corrispondente. A differenza di un puntatore a funzione del C porta con sé l'istanza a cui il metodo appartiene, e il compilatore verifica la firma. I delegate arrivarono con .NET 1.0 nel 2002 e resero sopportabile la gestione degli eventi in Windows Forms.
Sono multicast: un delegate può contenere una lista di invocazione con più metodi, e += vi aggiunge elementi. È l'intero fondamento della parola chiave event. Da C# 3.0 pochi sviluppatori dichiarano ancora tipi delegate propri: i generici Func<> e Action<> insieme alle espressioni lambda coprono quasi tutto, e LINQ poggia interamente su di essi.