Сбор и снятие обработчиков в C#
Оператор += дописывает метод к существующей
цепочке, а -= снимает конкретный обработчик.
Если метод не был в списке, -= просто
ничего не меняет.
Запишем два обработчика, добавим оба и вызовем делегат:
void A() { Console.Write("A"); }
void B() { Console.Write("B"); }
Action? chain = A;
chain += B;
chain?.Invoke();
Уберем один обработчик и снова вызовем переменную:
void A() { Console.Write("A"); }
void B() { Console.Write("B"); }
Action? chain = A;
chain += B;
chain -= A;
chain?.Invoke();
Сделайте два метода, которые выводят "on"
и "off" с новой строки.
Добавьте оба в одну переменную, затем снимите первый
и выполните один общий вызов.