Avatar ·

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; } } ``` 区别是什么?什么时候该用第一种方式,什么时候该用第二种?