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

Отложенное выполнение LINQ

Вопрос

Что выведет код?

var list = new List<int> { 1, 5, 7 };
var query = list.Where(x => x > 2);
list.Add(10);
Console.WriteLine(query.Count());

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: 3. Where не выполняется сразу: query это описание запроса.

Варианты ответа

  1. 2
  2. 0
  3. 3правильный ответ
  4. Ошибка: коллекция изменена во время перечисления

Разбор

Where не выполняется сразу: query это описание запроса. Перечисление происходит в Count(), к этому моменту в списке уже 1, 5, 7, 10, и условию > 2 удовлетворяют три числа. Исключение об изменении коллекции было бы, если бы список меняли внутри foreach по нему, а здесь изменение до перечисления. Чтобы зафиксировать результат, вызывают ToList() сразу.

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

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