Avatar ·

Wozu dient das Schlüsselwort yield in C#? Wie verwendet man yield return und yield break?

Hallo zusammen! Ich habe gerade angefangen, C# zu lernen, und bin auf das Schlüsselwort `yield` gestoßen. Ehrlich gesagt verstehe ich nicht ganz, wozu es dient und wie man es richtig verwendet. Ich habe Beispiele gesehen, in denen `yield return` innerhalb von Methoden verwendet wird, die `IEnumerable` oder `IEnumerable` zurückgeben. Aber ich habe zwei Fragen: 1. Was ist der Unterschied zwischen der normalen Rückgabe einer Sammlung (z.B. `List` via `return`) und der Verwendung von `yield return`? 2. Wann wird das in echten Projekten wirklich benötigt, und nicht nur in Lehrbeispielen? Hier ist ein Beispiel, das ich auf MSDN gefunden habe, aber es erscheint mir seltsam: ```csharp static IEnumerable GetNumbers() { for (int i = 0; i < 10; i++) { yield return i; } } ``` Warum kann man es nicht einfach so machen? ```csharp static List GetNumbers() { List list = new List(); for (int i = 0; i < 10; i++) { list.Add(i); } return list; } ``` Das Ergebnis scheint doch dasselbe zu sein – wir bekommen eine Liste von Zahlen von 0 bis 9. Was ist der Vorteil von `yield return`? Und wann sollte man `yield break` verwenden?