Зачем нужны события, когда уже есть делегаты? - 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);
}
}
}