Kezzya
@Kezzya

Зачем нужно событие если есть делегат?

Вот есть делегат, я могу его вызвать в любой момент ( если уже сохранил туда методы ) А зачем собственно нужны события? Ещё не ясно, когда надо указывать EventHandler, когда надо просто название другого делегата.
Спасибо
  • Вопрос задан
  • 381 просмотр
Решения вопроса 1
Athari
@Athari
программист
Если оставить делегаты как анонимные методы в стороне, то события и делегаты соотносятся как свойства и поля.

1. Событие — это свойство с методами "add" и "remove".
2. Вызов свойства доступен только изнутри класса.
3. Событие может быть как обёрткой над полем-делегатом (аналог автосвойства), так и хранить ссылки на делегаты в какой-то другой форме и вообще содержать любую дополнительную логику.
4. Событие может быть виртуальным и т.п.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
petermzg
@petermzg
Самый лучший программист
Так событие и есть делегат, только с дополнительными свойствами из которых самое важное, что вызвать его можно только из класса, где он обьявлен.
Ответ написан
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
Джон Скит (Jon Skeet) об этом хорошо написал:
https://csharpindepth.com/Articles/Events
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы