Uso correcto de yield return en C#: ¿cuándo y por qué?
¡Hola a todos! Recientemente comencé a estudiar C# y me encontré con la palabra clave `yield return`. Leí la documentación, pero no terminé de entender en qué situaciones debería usarla y en cuáles no.
Por ejemplo, tengo un método que devuelve una colección de números de Fibonacci:
```csharp
public static IEnumerable 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 algunos escriben así:
```csharp
public static 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 `yield return` y cuándo es mejor crear la colección explícitamente? ¿Hay algún inconveniente? Gracias de antemano por la aclaración.