Что выведет код Middle Коллекции и LINQ спрашивают часто обновлено

Отложенный LINQ и изменённая переменная

Вопрос

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

int min = 2;
var nums = new[] { 1, 2, 3, 4 };
var q = nums.Where(n => n > min);
min = 3;
Console.WriteLine(string.Join(",", q));
min = 0;
Console.WriteLine(q.Count());

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

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

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

Коротко

Код выведет: 4, 4. Лямбда захватывает переменную min, а не её значение, а Where выполняется только при перечислении.

Что выведет

4
4

Разбор

Лямбда захватывает переменную min, а не её значение, а Where выполняется только при перечислении. При первом перечислении min равен 3: выводится 4. При втором min уже 0: подходят все 4 числа.

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

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