рабочая схема доходности
Когда у меня есть блок кода
static void Main()
{
foreach (int i in YieldDemo.SupplyIntegers())
{
Console.WriteLine("{0} is consumed by foreach iteration", i);
}
}
class YieldDemo
{
public static IEnumerable<int> SupplyIntegers()
{
yield return 1;
yield return 2;
yield return 3;
}
}
Могу ли я интерпретировать принцип доходности как
Main () вызывает SupplyIntegers ()|1| |2| |3| are stored in contiguous memory block.Pointer of "IEnumerator" Moves to |1|
Управление возвращается из SupplyInteger () в Main ().Main () печатает значениеУказатель перемещается в | 2 | и так далее.Пояснения:
(1) Обычно у нас будет один допустимый оператор return, разрешенный внутри функции. Как C # обрабатывает, когда присутствуют множественные операторы return, yield return, ...?
(2) После того, как возврат обнаружен, для элемента управления нет способа снова вернуться в SupplyIntegers (), в случае если это разрешено, не будет ли доход снова начинаться с 1? Я имею в виду доходность возврата 1?