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?