kiedy mam blok koduwzór pracy zwrotu plonu
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;
}
}
mogę zinterpretować zasadę za powrót plonu jako
- Main() wywołuje SupplyIntegers()
|1| |2| |3| are stored in contiguous memory block.Pointer of "IEnumerator" Moves to |1|
- Kontrola zwraca z SupplyInteger() na Main().
- Główna() drukuje wartość
- Wskaźnik Przejście do | 2 |, i tak dalej.
Wyjaśnienia:
(1) Normalnie mamy jeden ważny return jest dozwolone Wewnątrz function.How robi C# traktuje gdy zwrot wielokrotny plon, plon powrót ... stwierdzenia są obecne ?
(2) Po napotkaniu zwrotu nie ma możliwości, aby kontrola ponownie wróciła do SupplyIntegers(), w przypadku, gdy jest to dozwolone, czy wydajność nie zacznie się od 1? Mam na myśli zwrot z inwestycji 1?
Re prośbą o książce: C# w głębi (Manning, Skeet), rozdział 6. Jest to bezpłatny przykładowy rozdział i obejmuje bloki iteratorów. Nie jest to właściwie książka dla początkujących C# (daleko od niej), ale będziesz mieć trudności ze znalezieniem lepszego odniesienia na ten temat. –
Jeśli uprawnienia zezwalają na "nie napisałeś żadnych książek?" – user193276
Nie, nie mam. Robię korektę dla wydawcy i czasami piszę ten dziwny artykuł itp. Ale nie mam książek. –