Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
я крайне советую воспользоваться книгой «CLR via C#» за авторством Джеффри РихтераПолностью поддерживаю, прекрасная книга. Само собой, если уровень английского позволяет, лучше читать в оригинале.
Перво-наперво: события (event) не являются экземплярами делегатов. А теперь снова:
События — это НЕ экземпляры делегатов.
В некотором смысле жаль, что язык C# позволяет использовать события и экземпляры делегатов в определённых ситуациях одинаковым образом, однако очень важно понимать разницу.
Событие — это специализированный делегат, позволяющий сторонним объектам только подписываться или отписываться, по сути — формализация паттерна «Наблюдатель».
События это особый тип многоадресных делегатов, которые можно вызвать только из класса или структуры, в которой они объявлены (класс издателя).Это дословный перевод с англоязычного:
Events are a special kind of multicast delegate that can only be invoked from within the class or struct where they are declared (the publisher class).
события — это не делегаты, но оболочки вокруг экземпляров делегатов, которые предоставляют им (экземплярам) дополнительный функционал.
Делегаты и события в .NET