Существует 4 вида использования делегатов:
1. Делегат для выбора методов делегирования (программист не знает, какой метод ему понадобится и задаёт или определяет его во время выполнения программы);
2. Делегат – оповещатель наблюдателя (паттерн “наблюдатель”);
3. Делегат, как обратный вызов метода;
4. Делегат, как обработчик событий. Обычно события обрабатываются не простыми методами, а делегатами. Событие генерирует идею “произошло нечто важное”, и программа должна на него отреагировать. События и делегаты являются тесно связанными понятиями, поскольку обработка событий требует точного выбора обработчика. Обработчик события реализуется на языке С#, как правило, в виде делегата.