Описание тега delegates

Делегаты могут относиться к нескольким концепциям. Объект может полагаться на другого (делегата) для выполнения функции. Делегирование также может относиться к функции языка программирования, использующей правила поиска методов для отправки самовызовов. В C# делегат определяет, какой метод вызывать при запуске события.

В объектно-ориентированном программировании есть три связанных понятия делегирования.

Чаще всего делегирование относится к функции языка программирования, использующей правила поиска метода для диспетчеризации так называемых самовызовов. Делегирование как языковая функция поддерживает модель программирования на основе прототипов.

Делегирование также может относиться к одному объекту, полагающемуся на другой для предоставления определенного набора функций. В исследованиях это часто называют консультацией или агрегированием при моделировании.

В C# делегат - это способ сообщить, какой метод вызывать при запуске события, с сохранением типа метода.

А Delegate- это тип, который безопасно инкапсулирует метод, аналогично указателю на функцию в C и C++. В отличие от указателей функций C, делегаты являются объектно-ориентированными, безопасными по типу и безопасностью.

Официальный источник