«YieldExceptionYield» (Решение)
Ответ
Exception не произойдёт.
Объяснение
Действительно, строка
var numbers = GetSmallNumbers();
только строит запрос, но не выполняет его. Строка
var evenNumbers = numbers.Select(n => n * 2);
также строит ещё один запрос без непосредственного выполнения. Отдельный интерес представляет последняя строка метода Main
:
Console.WriteLine(evenNumbers.FirstOrDefault());
Данный вызов оценит получит только первый элемент запроса (одиночные вызовы MoveNext()
и Current
), дальнейшее получение элементов перечисления происходить не будет. Таким образом, код отработает без исключений.