Ответ 1
Вы правы. Событие - это просто делегат с немного отличающимися функциональными возможностями. Весь шаблон наблюдателя может быть реализован с помощью делегатов, не затрагивая ключевое слово event
.
Тогда вам может быть интересно, в чем ключевое слово "event" на самом деле приводит к таблице.
- События могут быть частью интерфейса, тогда как регулярное поле делегата не может
- События не могут быть вызваны внешними классами, но регулярные делегаты могут
- События имеют дополнительные аксессоры (добавление и удаление), которые вы можете переопределить и предоставить настраиваемые функции для
Изменить: Здесь отличная запись с сопоставлением IL-кода между событиями и делегатами. (Подсказка: это почти то же самое).