Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2017, 03:07   #1
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию Делегаты и события

Здравствуйте.
В 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 нажата кнопка и проч.
Использовать готовые события и назначать обработчики не вопрос. А вот делать свои... Вопросы, вопросы, вопросы...
Плиз, знающие, поясните всю данную ситуацию, и желательно с примером задачи, где без делегатов и событий никак. Покажите и объясните на примере их использование.
Заранее Благодарен!
jonikster вне форума Ответить с цитированием
Старый 25.02.2017, 08:51   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Но непонятно. Зачем?
Э? Ну так вы сами привели прекрасный пример...

Есть событие OnClick и делегат Button1.OnClick. Когда наступает событие OnClick, то вызывается соответствующий метод.
p51x вне форума Ответить с цитированием
Старый 25.02.2017, 09:50   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от jonikster Посмотреть сообщение
где без делегатов и событий никак.
Разработчики винформс во время разработки кнопки не знают что вы захотите сделать при нажатии кнопки в вашем приложении.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.02.2017, 12:04   #4
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

С событиями я более менее понимаю, но делегаты...
jonikster вне форума Ответить с цитированием
Старый 25.02.2017, 12:07   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык посмотрите как реализованы события.

Делегат это по сути просто ссылка на функцию.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.02.2017, 23:29   #6
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

Я понимаю, но зачем...
jonikster вне форума Ответить с цитированием
Старый 26.02.2017, 23:33   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что зачем? Рассказал же уже про один пример.


Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Разработчики винформс во время разработки кнопки не знают что вы захотите сделать при нажатии кнопки в вашем приложении.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.02.2017, 06:53   #8
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

всё равно непонятна суть делегатов.
jonikster вне форума Ответить с цитированием
Старый 27.02.2017, 08:07   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Можете считать, что делегат это просто ссылка на функцию. Переменная, которая содержит ее адрес.
ВОт вы разрабатываете ГУИ либу и, естественно, хотите, чтобы программист ее использующий мог сам написать функцию обработчик события "клик" по кнопке.
p51x вне форума Ответить с цитированием
Старый 27.02.2017, 16:26   #10
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

Я понимаю, что делегат переменная, с ссылкой на метод. Но зачем это надо?
jonikster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Делегаты KatruKot2 C# (си шарп) 15 28.09.2014 15:01
Делегаты и события Kirsan94 C# (си шарп) 2 03.12.2013 08:11
Делегаты C# sir.andrey Помощь студентам 3 21.09.2011 10:06
События в WPF. Обращение к компонентам формы из события Casper-SC Общие вопросы .NET 3 25.07.2010 19:03
События и делегаты в C# как они работают _PROGRAMM_ Общие вопросы .NET 11 04.02.2010 06:44