Когда у меня есть кодовый блок
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|
- Control возвращает from SupplyInteger() в Main().
- Main() печатает значение
- Указатель Переместится в | 2 | и т.д.
Разъяснения:
(1) Обычно у нас есть один действительный оператор return внутри функции. Как это сделать С# обрабатывает, когда присутствуют несколько возвратов доходности, return return,......
(2) После того, как встречается возврат, нет возможности снова вернуться к управлению SupplyIntegers(), если он разрешен, не будет ли доход снова начинаться с 1? Я имею в виду возврат доходности 1?