воскресенье, 9 января 2022 г.

Делегаты и события

Здравствуйте.
В C# есть такие 2 темы, как делегаты и события.

Я попробовал их изучить, даже код рабочий, но я не понимаю сути. Зачем, как и почему.

 

Делегаты:

Делегаты я понимаю только так:

Есть функция
Код:
public void MyFunction(int a, int b)
А делегат это как бы ссылка на эту функцию.

То есть объявляем делегат с такой же сигнатурой:
Код:
public delegate void MyDelegate(int a, int b);
Потом инициализируем делегат:

Код:
MyDelegate md = new MyDelegate(MyFunction);
И теперь можем обращаться к функции как:
Код:
md(4, 4);
Но непонятно. Зачем?

Можете считать, что делегат это просто ссылка на функцию. Переменная, которая содержит ее адрес.
ВОт вы разрабатываете ГУИ либу и, естественно, хотите, чтобы программист ее использующий мог сам написать функцию обработчик события "клик" по кнопке.

события:
Как я понимаю, события вызываются при каких то условиях. Например Tick, прошла секунда, Click нажата кнопка и проч.

Использовать готовые события и назначать обработчики не вопрос. А вот делать свои... 

Комментариев нет:

Отправить комментарий

Паттерн 'Репозиторий' в ASP.NET

  Последнее обновление: 1.11.2015         Одним из наиболее часто используемых паттернов при работе с данными является паттерн 'Репозито...