Управление обработчиками событий

В языке программирования C# есть возможность управлять обработчиками событий. Для этого используются специальные акссесоры add/remove. С их помощью вы сможете управлять как добавлением, так и удалением обработчиков. На практике данная функциональность требуется нечасто, но иногда она может пригодиться. Рассмотрим пример:

Далее происходит разбивка процесса определения события на 2 части. Сначала мы просто определяем переменную, через которую можно вызывать связанные обработчики:

Во 2-й части процесса следует определить акссесоры add/remove. Вызов аксессора add происходит при добавлении обработчика, а если точнее -- при выполнении операции +=. В данном случае добавляемый обработчик является доступным через ключевое слово value, при этом у нас есть возможность получить информацию об обработчике (к примеру, имя метода посредством value.Method.Name), а также определить некоторую логику. В нашем примере в целях простоты сообщение выводится на консоль:

Теперь поговорим про блок remove -- его вызов происходит, если надо удалить обработчик. Как и в предыдущем случае, у нас есть возможность задать какую-нибудь дополнительную логику.

Внутри класса вызов события также осуществляется с помощью переменной _notify. Для добавления/удаления обработчиков в программе применяется как раз Notify:

Осталось посмотреть на консольный вывод программы:

По материалам https://metanit.com/sharp/tutorial/.