yield return выдаёт очередной элемент из итератора и приостанавливает его выполнение до следующего запроса элемента. Это позволяет обходить последовательность без её предварительного накопления целиком.
Что означает yield return?
yield return выдаёт очередной элемент из итератора и приостанавливает его выполнение до следующего запроса элемента. Это позволяет обходить последовательность без её предварительного накопления целиком.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
yield return выдаёт очередной элемент из итератора и приостанавливает его выполнение до следующего запроса элемента. Это позволяет обходить последовательность без её предварительного накопления целиком.
IEnumerable<int> Squares(int count)
{
for (int i = 0; i < count; i++)
yield return i * i;
}
Для небольшого count цикл вычисляет квадраты по мере foreach. Компилятор создаёт машину состояний, сохраняющую позицию и локальные переменные; yield break завершает перечисление. Повторный обход может повторно выполнить вычисления и побочные эффекты. Обычный yield return не создаёт отдельный поток и не равен await.