Зачем нужны события, когда уже есть делегаты? - C#

Узнай цену своей работы

Формулировка задачи:

Сабж. Зачем создавать событие(event), привязывать его к делегату и добавлять слушателей к событию, когда можно сразу добавить слушателей в делегат и уменьшить себе работу не создавая событий? Может у событий есть какие то дополнительные свойства что делает их круче делегатов в плане контейнера для слушателей? Иначе нет смысла

Решение задачи: «Зачем нужны события, когда уже есть делегаты?»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication28 {
  7.     class Program {
  8.        
  9.         static void Main(string[] args) {
  10.             EvenTest et = new EvenTest();
  11.             et.MyEvent += (s, e) => Console.WriteLine("Hello");
  12.             et.Foo();
  13.             et.Counter = 10;
  14.             et.MyEvent += (s, e) => Console.WriteLine("Hello");
  15.             et.Foo();
  16.  
  17.             Console.ReadLine();
  18.         }
  19.     }
  20.     public class EvenTest {
  21.         public int Counter { get; set; }
  22.         private event EventHandler _myEvent = delegate { };
  23.         public event EventHandler MyEvent {
  24.             add {
  25.                 //Тут мы можем реализовать нашу логику
  26.                 if (Counter != 0) {
  27.                     _myEvent += value;
  28.                 }
  29.             }
  30.             remove {
  31.                 //И тут тоже
  32.                 _myEvent -= value;
  33.             }
  34.         }
  35.         public void Foo() {
  36.             _myEvent(this, EventArgs.Empty);
  37.         }
  38.     }
  39. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут