Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
 Аватар для Glitch
10 / 10 / 5
Регистрация: 28.09.2015
Сообщений: 139

Что такое событие, для чего оно нужно

28.01.2016, 12:19. Показов 4061. Ответов 28

Студворк — интернет-сервис помощи студентам
Помогите разобраться, что ли
Вчера пытался понять что же такое событие, для чего оно нужно, зачем ему делегат
Ну и собственно вот попытки

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
 
public delegate void MethodContainer(); // Это делегат, который вызовет метод с сигнатурой void
 
class ClassCounter // Это класс издатель
{
    public event MethodContainer onCount; // Это событие, которое произойдет при вызове onCount
 
    public void Count()
    {
        for (int i = 0; i < 100; i++)
        {
            if (i == 10)
            {
                Console.WriteLine("Событие вызвано");
                onCount(); // Вызов события 
            }
        }
    }
}
 
class Handler_I // Класс подписчик
{
    public void Message()
    {
        Console.WriteLine("Handler_I: Счет достиг 10");
    }
}
 
class Handler_II // Класс подписчик 
{
    public void Message()
    {
        Console.WriteLine("Handler_II: Счет достиг 10");
    }
}
 
class Program
{
    static void Main()
    {
        ClassCounter Counter = new ClassCounter(); // Создание экземпляров
        Handler_I Handler1 = new Handler_I();
        Handler_II Handler2 = new Handler_II();
 
        //Подписались на событие
        Counter.onCount += Handler1.Message;
        Counter.onCount += Handler2.Message;
 
        //Запустили счетчик
        Counter.Count();
    }
}
Как я понял, делегат нужен событию для того чтобы подписчики были только одной сигнатуры?
То есть нельзя чтобы, например, подписчики были типа int и типа void?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2016, 12:19
Ответы с готовыми решениями:

Swapfile.sys Что это такое и для чего оно?
Я считаю что этот файл занимает много места. Реально ли удалить. Я знаю как уменьшить pagefile.sys(файл подкачки) но про swapfile ничего не...

Подскажите что такое md5 шифрование пароля и для чего оно надо ?
Подскажите что такое md5 шифрование пароля и для чего оно надо ?

Что такое md5? Для чего это нужно? Где используется?
Всем доброго времени суток! Что такое md5? Для чего это нужно? Где используется? Спасибо!

28
 Аватар для Glitch
10 / 10 / 5
Регистрация: 28.09.2015
Сообщений: 139
28.01.2016, 20:30  [ТС]
Студворк — интернет-сервис помощи студентам
А событие обязательно объявлять и вызывать в одном классе?
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
28.01.2016, 20:47
Цитата Сообщение от Glitch Посмотреть сообщение
А событие обязательно объявлять и вызывать в одном классе?
Хз, а к чему эти вопросы?

Событие хоть в программировании, хоть в жизни, имеет время и место.
Так вот, место - это объект, в определенный момент времени в нем происходят изменения,
возникает событие "Чото там изменилось", которое содержит список делегатов,
каждый делегат вызывается.

А как иначе это вообще можно представить?
Или вы хотите, чтобы вас били по голове, а болела задница?

У события как ни крути есть место! Это класс, в котором оно объявлено.
Что вы подразумеваете под "объявить в другом классе", я не понял, - но, в другом классе можно обработать.
0
 Аватар для Glitch
10 / 10 / 5
Регистрация: 28.09.2015
Сообщений: 139
28.01.2016, 20:53  [ТС]
Да как-то на ситуациях я не очень все это понимаю Мне понятнее языком программы, так то
Цитата Сообщение от Woldemar89 Посмотреть сообщение
Что вы подразумеваете под "объявить в другом классе"
Наверное подразумеваю сгенерировать его? Просто тут в примерах они в одном классе объявляются (издателе). Стало интересно, можно ли иначе
C#
1
2
3
4
5
6
7
8
9
class MyEvent
{
    public event MyEventHandler SomeEvent;
 
    public void OnSomeEvent()
    {
        if (SomeEvent != null) SomeEvent();
    }
}
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
28.01.2016, 20:56
Цитата Сообщение от Glitch Посмотреть сообщение
Наверное подразумеваю
Сами не понимаете чего хотите.
Цитата Сообщение от Glitch Посмотреть сообщение
Стало интересно, можно ли иначе
Вообще, так или иначе, я думаю можно, непонятно только через опу или нет.

Сначала придумайте хороший повод, зачем это надо, потом уже поищем решение,
если повод адекватный будет, а то, сам смысл события при этом теряется.
0
 Аватар для Glitch
10 / 10 / 5
Регистрация: 28.09.2015
Сообщений: 139
28.01.2016, 21:00  [ТС]
Цитата Сообщение от Woldemar89 Посмотреть сообщение
Сначала придумайте хороший повод, зачем это надо
Зачем придумывать лишние поводы? Это ж все ради интереса!
Вы имели в виду под "местом" некий метод? (например OnSomeEvent)
Или же объект в Main методе, который вызывает событие?
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
28.01.2016, 21:05
Цитата Сообщение от Glitch Посмотреть сообщение
Зачем придумывать лишние поводы?
Чтобы я знал зачем мне напрягаться, мой энтузиазм в помощи вам - не бесконечен
0
 Аватар для Glitch
10 / 10 / 5
Регистрация: 28.09.2015
Сообщений: 139
28.01.2016, 21:09  [ТС]
Цитата Сообщение от Woldemar89 Посмотреть сообщение
мой энтузиазм в помощи вам - не бесконечен
Так вы объясняйте понятнее, чтоб у меня вопросов к вам не было
И я не только вам вопросы задаю, не хотите - не помогайте, поможет кто-то другой
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
28.01.2016, 21:13
Цитата Сообщение от Glitch Посмотреть сообщение
Так вы объясняйте понятнее
Это вы объясняйте понятнее, чего хотите и, желательно, зачем.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
28.01.2016, 22:10
Цитата Сообщение от Glitch Посмотреть сообщение
А событие обязательно объявлять и вызывать в одном классе?
Технически событие может вызывать только тот класс, в котором оно объявлено.
Но по факту никто не запрещает сделать открытый для всех метод, который будет генерировать это событие — как в вашем примере выше.
Всё упирается в цели: если вам нужно, чтобы другие классы имели возможность генерировать событие в вашем классе, то вы предоставляете им такую возможность, если не нужно — не предоставляете.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.01.2016, 22:10

Что такое eclipse и зачем оно нужно?
в общем для чего она нужна то кто в курсе я то скачал ее но там байда насчет одних проектов в каком месте там на яве програмировать и что...

Что такое внедрение зависимостей и зачем оно нужно?
Я почти уверен, что для тех, кто работает с ASP.NET этот вопрос покажется идиотским, но я лишь недавно начал с этим разбираться, так как...

OpenVZ, VMware® ESXi 64-bit - для чего оно нужно?
Извиняюсь, может не там создал тему, но не нашел более подходящего раздела. Объясните зачем нужно виртуализировать систему? Для чего это...

Правильно ли составлено выражение, и для чего оно нужно в данном коде?
Всем доброго времени суток! Нужно составить код для решения уравнения методом итераций 0.25х^3+x-1.2502=0 х Вопрос,...

Для чего нужно событие Form_QueryUnload
Добрый вечер объясните новичку что значит событие Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) End Sub ...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru