Arbeitsmuster der Rendite Rendite

Wenn ich einen Codeblock habe

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;
       }
   }

Kann ich das Prinzip hinter der Rendite als interpretieren?

Main () ruft die SupplyIntegers () auf|1| |2| |3| are stored in contiguous memory block.Pointer of "IEnumerator" Moves to |1|Die Steuerung kehrt von SupplyInteger () zu Main () zurück.Main () gibt den Wert ausZeiger springt nach | 2 | und so weiter.

Klarstellungen:

(1) Normalerweise ist in einer Funktion eine gültige return-Anweisung zulässig. Wie wird C # behandelt, wenn mehrere Anweisungen yield return, yield return, ... vorhanden sind?

(2) Sobald die Rückgabe erfolgt ist, gibt es keine Möglichkeit, die Steuerung wieder an SupplyIntegers () zurückzugeben. Wenn dies zulässig ist, beginnt der Ertrag dann nicht wieder bei 1? Ich meine Rendite Rendite 1?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage