рабочая схема доходности

Когда у меня есть блок кода

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?

Ответы на вопрос(4)

Ваш ответ на вопрос