À quoi sert le mot-clé yield en C# ? Comment utiliser yield return et yield break ?
Bonjour à tous ! Je viens de commencer à apprendre C# et je suis tombé sur le mot-clé `yield`. Honnêtement, je ne comprends pas bien à quoi il sert ni comment l'utiliser correctement.
J'ai vu des exemples où `yield return` est utilisé dans des méthodes qui retournent `IEnumerable` ou `IEnumerable`. Mais j'ai deux questions :
1. Quelle est la différence entre le retour normal d'une collection (par exemple, `List` via `return`) et l'utilisation de `yield return` ?
2. Quand est-ce vraiment nécessaire dans des projets réels, et pas seulement dans des exemples pédagogiques ?
Voici un exemple que j'ai trouvé sur MSDN, mais il me semble étrange :
```csharp
static IEnumerable GetNumbers()
{
for (int i = 0; i < 10; i++)
{
yield return i;
}
}
```
Pourquoi ne pas simplement faire ceci ?
```csharp
static List GetNumbers()
{
List list = new List();
for (int i = 0; i < 10; i++)
{
list.Add(i);
}
return list;
}
```
Le résultat semble pourtant le même — nous obte