Delegate (C#)
A type-safe function pointer: a variable that holds a method and can be called as though it were the method.
You declare it as its own type — delegate int Op(int a, int b); — and can then assign any method with a matching signature to it. Unlike a C function pointer it carries the instance the method belongs to, and the compiler checks the signature for you. Delegates shipped in .NET 1.0 in 2002 and were what made event handling tolerable in Windows Forms.
They are multicast: one delegate can hold an invocation list of several methods, and += appends to it. That is the entire foundation of the event keyword. Since C# 3.0 few developers declare their own delegate types any more — the generic Func<> and Action<> plus lambda expressions cover nearly everything, and LINQ rests wholly on them.