C#中yield关键字的作用及工作原理
大家好!我最近开始学习C#,遇到了`yield`关键字。我读了MSDN上的文档,但没完全理解它的用途。似乎可以直接从方法返回list或array,为什么要用yield return?
我有这样一段代码:写一个生成斐波那契数列的方法。目前我是这样做的:
```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;
}
```
但我看到可以用`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;
}
}
```
区别是什么?什么时候该用第一种方式,什么时候该用第二种?