Что выведет код Middle Делегаты и события обновлено

Добавление и удаление методов в делегате

Вопрос

Что выведет программа (.NET 8)? По строке на каждый вывод.

Action a = () => Console.Write("A");
Action b = () => Console.Write("B");
Action chain = a + b + a;
chain();
Console.WriteLine();
chain -= a;
chain();
Console.WriteLine();
Console.WriteLine(chain.GetInvocationList().Length);

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: ABA, AB, 2. Список вызовов a + b + a это A B A.

Что выведет

ABA
AB
2

Разбор

Список вызовов a + b + a это A B A. Операция -= удаляет последнее вхождение a в списке, остаётся A B. В списке два метода.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме