Зачем нужны события, когда уже есть делегаты? - 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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д