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

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

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

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

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication28 {
    class Program {
        
        static void Main(string[] args) {
            EvenTest et = new EvenTest();
            et.MyEvent += (s, e) => Console.WriteLine("Hello");
            et.Foo();
            et.Counter = 10;
            et.MyEvent += (s, e) => Console.WriteLine("Hello");
            et.Foo();
 
            Console.ReadLine();
        }
    }
    public class EvenTest {
        public int Counter { get; set; }
        private event EventHandler _myEvent = delegate { };
        public event EventHandler MyEvent {
            add {
                //Тут мы можем реализовать нашу логику
                if (Counter != 0) {
                    _myEvent += value;
                } 
            }
            remove {
                //И тут тоже
                _myEvent -= value;
            }
        }
        public void Foo() {
            _myEvent(this, EventArgs.Empty);
        }
    }
}

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


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

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

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