Опис делегата задає сигнатуру методів, які можуть бути викликані з його допомогою:
[ атрибути ] [ специфікатори ] delegate тип ім'я_делегата ([ параметри ])
Специфікатори делегата мають той же сенс, що і для класу, причому допускаються тільки специфікатори new, public, protected, internal і private.
Тип описує повертаєме значення методів, що викликаються за допомогою делегата, а необов'язковими параметрами делегата є параметри цих методів. Делегат може зберігати посилання на декілька методів і викликати їх по черзі. При цьому сигнатури всіх методів повинні збігатися.
Приклад опису делегата: public delegate void D (int i );
Тут описаний тип делегата, який може зберігати посилання на методи, повертаючі void і що приймають один параметр цілого типу.
Делегат, як і всякий клас, є типом даних. Його базовим класом є клас System.Delegate, що забезпечує свого “нащадка” деякими корисними елементами, які ми розглянемо пізніше. Успадковувати від делегата не можна.
Оголошення делегата можна розміщувати безпосередньо в просторі імен або усередині класу.