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

Счётчик на замыкании

Вопрос

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

Func<int> MakeCounter()
{
    int count = 0;
    return () => ++count;
}

var c1 = MakeCounter();
var c2 = MakeCounter();
c1(); c1();
Console.WriteLine(c1());
Console.WriteLine(c2());

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

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

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

Коротко

Код выведет: 3, 1. Каждый вызов MakeCounter создаёт свою переменную count (свой объект-замыкание). c1 вызван трижды: печатается 3.

Что выведет

3
1

Разбор

Каждый вызов MakeCounter создаёт свою переменную count (свой объект-замыкание). c1 вызван трижды: печатается 3. У c2 свой счётчик: 1.

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

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

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