在C#中使用yield

Ste*_*eve 22 c# yield-return

我对中的yield关键字有一个模糊的理解,但我还没有看到在我的代码中使用它的必要性.这可能源于对它缺乏了解.

那么,一些典型的好用法是yield什么?

EMP*_*EMP 14

yield只是让实现枚举器变得非常简单.因此,如果您想编写一个返回IEnumerable<T>它的方法,则可以节省您必须创建枚举器类 - 您一次只需要yield一个结果,编译器将负责详细介绍.

一个方便的案例是编写一个"无限枚举器",调用者可以根据需要多次调用.这是一个生成无限系列Fibonacci数的例子:http://chrisfulstow.com/fibonacci-numbers-iterator-with-csharp-yield-statements/(嗯...... 理论上无限,但实际上限于答:64).