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