Delegaten werden vom CLR speziell behandelt. Der Compiler liefert die Signaturen, aber der CLR weiß, was damit zu tun ist.
Abschnitt 8.9.3 von ECMA-335 Teil I spricht darüber:
Delegaten sind das objektorientierte Äquivalent von Funktionszeigern. Im Gegensatz zu Funktionszeigern sind Delegaten objektorientiert, typsicher und sicher. Delegaten werden erstellt, indem eine Klasse definiert wird, die von dem Basistyp System.Delegate abgeleitet ist (siehe Teil IV). Jeder Delegattyp muss eine Methode mit dem Namen Invoke mit entsprechenden Parametern bereitstellen, und jede Instanz eines Delegaten leitet Aufrufe seiner Invoke-Methode an eine oder mehrere kompatible statische oder Instanzmethoden auf bestimmten Objekten weiter. Die Objekte und Methoden, an die delegiert wird, werden bei Erstellung der Delegatinstanz ausgewählt.
Zusätzlich zu einem Instanzkonstruktor und einer Invoke-Methode können Delegaten optional zwei weitere Methoden haben: BeginInvoke und EndInvoke. Diese werden für asynchrone Aufrufe verwendet.
Obwohl Delegaten größtenteils einfach eine weitere Art von benutzerdefinierter Klasse zu sein scheinen, sind sie eng kontrolliert. Die Implementierungen der Methoden werden vom VES bereitgestellt, nicht vom Benutzercode. Die einzigen zusätzlichen Elemente, die auf Delegattypen definiert werden können, sind statische oder Instanzmethoden.
(VES ist das Virtuelle Ausführungssystem; der CLR ist Microsofts Implementierung des VES.)