C#

Вопрос про делегаты - callbacks/делегирования, зачем же нужны эти делегаты

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

Хочешь язык, в котором нет ничего лишнего - смотри в сторону Go.
Максим Татариков
Максим Татариков
78 318
Лучший ответ
Михаил Коваль Можете накидать код на C# с применением делегата? нужен пример который нельзя переделать без делегата
Делагаты сами по себе обычно бесполезны, они нужны для действий Action Delegate посмотри что такое действия, это часто очень используется.
Если коротко, на простом примере, то можно пояснить так. У каждого объекта, пусть даже визуального, например, у кнопки, есть указатели на функции (методы) обработки его данных или событий. Функция (метод) - делегат присваивается такому указателю на функцию (объекта), а потом может запуститься (сработать), когда надо, например, когда будет клик на кнопке.
Допустим, у нас есть кнопка с одним указателем:

#include<stdio.h>
//функция-делегат:
void delegat(int addr)
{
printf("\nButton %d is clicked...",addr);
}

//объект кнопка:
typedef struct button
{
char name[25];
void (*delegat)(int addr);//указатель на функцию
} button;

int main()
{
button MyButton;

//присвоить указателю на функцию
//кнопки функцию делегата:
MyButton.delegat=delegat;

//запустить делегата:
MyButton.delegat(35);

system("pause");
return 0;
}
Alex Brik
Alex Brik
37 945
>> зачем же нужны эти делегаты ...
Делегаты- делегируют.

>> Пожалуйста покажите пример ...
Ну вот смотри есть к примеру таблица по типу экселя 10 тышь на 10 тышь строк и столбцов и тебе необходимо обработать клик мышкой по ячейке в этой таблице.
Ты либо пишешь один миллион функций обработчиков онклик либо делегируешь обработку клика от всех ячеек одному делегату у которого должна остаться связь ссылка на объект который делегировал делегату.

от лат. ligo «связывать, соединять»
Михаил Коваль Пожалуйста напишите короткий код/пример на C#, очень вас прошу