Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
27 / 27 / 5
Регистрация: 11.09.2012
Сообщений: 107

В чём преимущество использования событий?

29.07.2014, 18:34. Показов 2329. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поясните в чём преимущество событий ?

например вот есть статья http://habrahabr.ru/post/213809/


C#
1
2
3
4
5
6
7
8
9
10
public void Count()
        {
            for (int i = 0; i < 100; i++)
            {
                if (i == 71)
                {
                     onCount();
                }
            }
        }
в onCount(); зарегистрировано два события :

C#
1
2
3
4
5
Handler_I Handler1 = new Handler_I();
            Handler_II Handler2 = new Handler_II();
 
            Counter.onCount += Handler1.Message;
            Counter.onCount += Handler2.Message;
я могу просто вызвать эти два метода без использования события :

C#
1
2
3
4
5
6
7
8
9
10
11
public void Count()
        {
            for (int i = 0; i < 100; i++)
            {
                if (i == 71)
                {
                     Handler1.Message();
                     Handler2.Message();
                }
            }
        }
и при этом мне не надо соблюдать сигнатуру методов

собственно вопрос в чём преимущество использования событий ?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.07.2014, 18:34
Ответы с готовыми решениями:

Преимущество использования static
Добрый день! Помогите, никак не могу понять преимущество использования static :cry:. Если можно, то приведите несколько примеров

В чем преимущество инкапсуляции
всем доброго времени!!! вот обычный код создания поля public object prop; но все рекомендуют делать так (т.е. инкапсулировать поле) ...

В чем преимущество использования Pimpl?
Есть две реализации одной лабораторной. Первая с закрытым наследованием, вторая с использованием Pimpl. Делают одно и тоже. Объясните...

7
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.07.2014, 20:57
Цитата Сообщение от Haravodec Посмотреть сообщение
в чём преимущество использования событий ?
Как один из вариантов - межпотоковое/межклассовое взаимодействие. Без событий вы там точно не обойдетесь.
1
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
30.07.2014, 05:43
Лучший ответ Сообщение было отмечено Haravodec как решение

Решение

Цитата Сообщение от Haravodec Посмотреть сообщение
я могу просто вызвать эти два метода без использования события
Но для этого ваш класс, обладающий методом Count() должен знать не только о существовании классов Handler_I и Handler_II, но и о существовании объектов Handler1 и Handler2. Если появится объект Handler3 класса Handler_III, то вам прийдется лезть в код класса с методом Count() и вносить туда соответствующие измененения (веселее будет если этот класс находится в dll, которую разрабатывали не вы, а значит исходников от нее у вас нет). Если же данный функционал реализован через событие, то вам будет достаточно добавить к событию onCount объекта Counter обраобтчик Handler3.Message.

Собственно, попробуйте представить, что для обработки клика по кнопке вам нужно не добавить обработчик к событию Button.Click, а
Цитата Сообщение от Haravodec Посмотреть сообщение
просто вызвать эти два метода без использования события
Цитата Сообщение от Haravodec Посмотреть сообщение
и при этом не надо соблюдать сигнатуру методов
Добавлено через 4 минуты
PS: Взгляд на приведенный вами код с другой строны: если у вас есть несколько counter'ов, то вы можете к событию onCount объекта counter1 добавить обработчик Handler1.Message, к событию onCount объекта counter2 добавить обработчик Handler2.Message, а к событию onCount объекта coutner3 вообще не добавлять обработчик, чтобы никаких действий не выполнялось. Если же не использовать события, а вызывать методы напрямую, то поведение у всех объектов вашего класса будет одинковое, и для все будут вызываться по очерди методы Hanlder1.Message и Handler2.Message.
3
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
30.07.2014, 08:06
В общем, согласен с kodv.
Если вкратце - для разделения областей видимости.
Конкретнее - для избавления от циклических ссылок. Кнопка на форме ничего не знает о самой форме, нажатие передаётся событием.
3
27 / 27 / 5
Регистрация: 11.09.2012
Сообщений: 107
30.07.2014, 10:56  [ТС]
спасибо за ответы. Теперь понятно.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
30.07.2014, 16:46
Цитата Сообщение от dondublon Посмотреть сообщение
Если вкратце - для разделения областей видимости.
Если вкратце - для низкой связности (low coupling). Область видимости тут не при чем.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
30.07.2014, 16:49
Цитата Сообщение от Jupiter Посмотреть сообщение
Если вкратце - для низкой связности (low coupling). Область видимости тут не при чем.
Это оно и есть, с другого боку.
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
23.01.2015, 15:05
Цитата Сообщение от insite2012 Посмотреть сообщение
Как один из вариантов - межпотоковое/межклассовое взаимодействие.
Кстати, об этом почти нигде не упоминают. Я давным давно мучился с этим делом. А потом оказалось, что можно события вызывать в одном потоке, а обрабатывать их в другом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.01.2015, 15:05
Помогаю со студенческими работами здесь

В чем преимущество использования хранимых процедур в ASP программировании?
Товарищи программисты, поскажите в чем приимущество использования хранимых процедур в ASP программировании и где можно этому нацучиться...

В чем преимущество использования библиотеки GSON перед стандартными средствами парсинга JSON?
В чем преимущество использования библиотеки GSON перед JSONObject JSONArray то есть перед стандартными средствами парсинга JSON ??

Обьесните преимущество использования Web-сервисов и есть ли оно вообще
Здравствуйте друзья. Web сервисы используют как посредник между базой и клиентским приложеним. Ведь можно подключиться к базе и через...

В чем преимущество em?
В общем, занимаюсь я версткой около 1.5 года, и до сих пор не пойму преимуществ использования единиц измерения em над px. Периодически...

В чем преимущество сборок
В чем преимущество сборок? - ответ на вопрос вроде очевиден, но все же ваше мнение И как часто вы используете сборки?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru