¿Para qué sirve la palabra clave yield en C# y cómo funciona?
¡Hola a todos! Recientemente comencé a estudiar C# y me topé con la palabra clave `yield`. Leí la documentación en MSDN, pero no terminé de entender para qué sirve. Parece que simplemente se podría devolver una lista o un array desde un método, ¿por qué usar yield return?
Tengo este código: escribo un método que genera una secuencia de números de Fibonacci. Actualmente lo hago así:
```csharp
public List GetFibonacci(int count)
{
var result = new List();
int a = 0, b = 1;
for (int i = 0; i < count; i++)
{
result.Add(a);
int temp = a;
a = b;
b = temp + b;
}
return result;
}
```
Pero he visto que se puede escribir lo mismo con `yield return`:
```csharp
public IEnumerable GetFibonacci(int count)
{
int a = 0, b = 1;
for (int i = 0; i < count; i++)
{
yield return a;
int temp = a;
a = b;
b = temp + b;
}
}
```
¿Cuál es la diferencia? ¿Cuándo debería usar la primera opción y cuándo