Аватар для Glitch
10 / 10 / 5
Регистрация: 28.09.2015
Сообщений: 139

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

28.01.2016, 12:19. Показов 4080. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru