Вот есть делегат, я могу его вызвать в любой момент ( если уже сохранил туда методы ) А зачем собственно нужны события? Ещё не ясно, когда надо указывать EventHandler, когда надо просто название другого делегата.
Спасибо
Если оставить делегаты как анонимные методы в стороне, то события и делегаты соотносятся как свойства и поля.
1. Событие — это свойство с методами "add" и "remove".
2. Вызов свойства доступен только изнутри класса.
3. Событие может быть как обёрткой над полем-делегатом (аналог автосвойства), так и хранить ссылки на делегаты в какой-то другой форме и вообще содержать любую дополнительную логику.
4. Событие может быть виртуальным и т.п.
Kezzya, да, добавление и удаление. Так же, как у обычных свойств запись (set) и чтение (get), которые "есть и у полей". Фишка в том, что в этих методах можно писать что угодно.