Uso correto de yield return em C#: quando e por quê?
Olá a todos! Recentemente comecei a estudar C# e me deparei com a palavra-chave `yield return`. Li a documentação, mas não entendi completamente em quais situações devo usá-la e em quais não.
Por exemplo, tenho um método que retorna uma coleção 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;
}
```
Mas vi que alguns escrevem assim:
```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;
}
}
```
Qual é a diferença? Quando devo usar `yield return` e quando é melhor criar uma coleção explicitamente? Existem algumas armadilhas? Desde já agradeço pela explicação.