Формат записи делегата фактически задает сигнатуру (описание) методов, которые могут быть вызваны с его помощью:
[спецификаторы] delegate<тип > <имя> (<параметры>);,
где
спецификаторы определяют условия доступа к делегату;
delegate —зарезервированное слово;
<тип> — тип возвращаемого результата;
<имя> — имя делегата (уникальный идентификатор);
<параметры> — формальные параметры вызова.
Например, описание всех функций вещественного типа, имеющих вещественный аргумент, имеет следующий вид:
public delegate double Funk(double argym);
Любая функция, соответствующая этому описанию, может использоваться в качестве параметра вызова умалчиваемого конструктора класса - делегата, который и возвращает конкретный экземпляр делегата – ссылку на функцию. Отличительной особенность работы делегата является формирование ссылок во время работы программы (динамически), а не на этапе ее компиляции.