roboczy wzór zwrotu zysku
Kiedy mam blok kodu
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;
}
}
czy mogę interpretować zasadę zwrotu zysku jako
Main () wywołuje SupplyIntegers ()|1| |2| |3| are stored in contiguous memory block.Pointer of "IEnumerator" Moves to |1|
Sterowanie powraca z SupplyInteger () do Main ().Main () drukuje wartośćWskaźnik przesuwa się do | 2 | i tak dalej.Wyjaśnienia:
(1) Normalnie będziemy mieli jedną poprawną instrukcję return, która jest dozwolona wewnątrz funkcji. Jak C # traktuje, gdy występuje wiele zwrotów wydajności, zwrot wydajności, ... są instrukcje?
(2) Po napotkaniu zwrotu nie ma możliwości, aby kontrola ponownie powróciła do SupplyIntegers (), w przypadku, gdy jest to dozwolone, czy Yield nie zacznie ponownie od 1? Mam na myśli zwrot z zysku 1?