Что выведет код 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 ошибок.