Подтвердить что ты не робот

Шаблон наблюдателя, реализованный в С# с делегатами?

Возникает вопрос, который был В С#, это не шаблон наблюдателя, уже реализованный с помощью событий?

Он спрашивает, уже ли шаблон наблюдателя уже реализован в С#, используя события.

Пока я получаю шаблоны событий и наблюдателей, не является ли шаблон наблюдателя действительно просто делегатами, а события - дополнительной реализацией?

4b9b3361

Ответ 1

Вы правы. Событие - это просто делегат с немного отличающимися функциональными возможностями. Весь шаблон наблюдателя может быть реализован с помощью делегатов, не затрагивая ключевое слово event.

Тогда вам может быть интересно, в чем ключевое слово "event" на самом деле приводит к таблице.

  • События могут быть частью интерфейса, тогда как регулярное поле делегата не может
  • События не могут быть вызваны внешними классами, но регулярные делегаты могут
  • События имеют дополнительные аксессоры (добавление и удаление), которые вы можете переопределить и предоставить настраиваемые функции для

Изменить: Здесь отличная запись с сопоставлением IL-кода между событиями и делегатами. (Подсказка: это почти то же самое).