デリゲート (C#)
型安全な関数ポインタ。メソッドを保持し、そのメソッドであるかのように呼び出せる変数である。
デリゲートは独自の型として宣言し(delegate int Op(int a, int b);)、シグネチャが一致する任意のメソッドを代入できる。C言語の関数ポインタと違い、メソッドが属するインスタンスも保持し、シグネチャの検査はコンパイラが行う。デリゲートは2002年の.NET 1.0で登場し、Windows Formsでのイベント処理をまともなものにした。
デリゲートはマルチキャストで、一つのデリゲートが複数のメソッドの呼び出しリストを持て、+=で追加される。これがeventキーワードの土台のすべてである。C# 3.0以降は独自のデリゲート型を宣言する開発者はほとんどおらず、ジェネリックなFunc<>とAction<>、ラムダ式でほぼ事足りる。LINQもこれらの上に成り立っている。