Delegat (C#)
En typsäker funktionspekare: en variabel som håller en metod och kan anropas som om den vore metoden.
Deklareras som en egen typ — delegate int Op(int a, int b); — och kan sedan tilldelas vilken metod som helst med matchande signatur. Till skillnad från en C-funktionspekare bär den med sig instansen metoden hör till, och kompilatorn kontrollerar signaturen. Delegater fanns med redan i .NET 1.0 år 2002 och var det som gjorde händelsehantering hanterbar i Windows Forms.
De är multicast: en delegat kan hålla en invokationslista med flera metoder, och += lägger till. Det är hela grunden för event-nyckelordet. Från C# 3.0 skriver få utvecklare egna delegattyper längre — de generiska Func<> och Action<> plus lambdauttryck täcker nästan allt, och LINQ vilar helt på dem.