Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

делегат с эвентом и без - чем отличаются?

09.05.17 21:54
Re: делегат с эвентом и без - чем отличаются?
 
anly коренной житель
anly
в ответ Wanderer_ 09.05.17 21:25, Последний раз изменено 09.05.17 21:58 (anly)

ну почему же нет? Даже Майкрософт в Windows.Forms использует евенты не только для уведомления, но и для опроса подписчиков. Пример тому напр. такие:


delegate void FormClosingEventHandler(object sender, FormClosingEventArgs e);

event FormClosingEventHandler FormClosing;


delegate void KeyEventHandler(object sender, KeyEventArgs e);

event KeyEventHandler KeyDown;


Просто здесь реакция подписчика возвращается через аргумент:

FormClosingEventArgs.Cancel

KeyEventHandler.Handled


Но в этом подходе есть однин недостаток: второй пописчик может перетереть решение предыдущего. А вот в предложенном мной выше решении (использовать Функцию вместо Экшина) этого недостатка нет. Правда, чуть больше кода писать надо. (Впрочем тоже самое можно написать и с Экшинами, а не функциями, но функции по-моему все же лучше)

Проклят нарушающий межи ближнего своего (Втор.27:17)
 

Перейти на