Hallo,
ich habe ein Verstänisproblem. Ich habe folgenden Code:
public class Program
{
static IEnumerable<int> Foo()
{
Console.Write("A");
yield return 1;
Console.Write("B");
yield return 2;
}
static void Main(string[] args)
{
var items = Foo();
Console.Write("C");
foreach (var item in items)
{
Console.Write(item);
}
}
}
Als ich das erste Mal den Code gesehne habe, habe ich mir gedacht, dass die Ausgabe CAB12 lauten muss. Beim nähren Betrachten wurde mir aber klar, dass die Ausgabe CA1B2 lautet. Kann jemand mir kurz erläutern, was da vor sich geht? Warum werden A und B erst in foreach-Schleife ausgegeben und nicht beim Aufruf der Methode? die Methode gibt ja eine int-Liset zurück, in der nur 1 und 2 stehen. yield return finde ich sowieso etwas verwirrend.
Danke im Voraus.