可能重复:
收益率报表实现
我看过msdn文档,上面写着:
yield关键字向编译器发出信号,表示它出现的方法是迭代器块。编译器生成一个类来实现迭代器块中表达的行为。在迭代器块中,yield关键字与return关键字一起使用,为枚举器对象提供值。
因此,这意味着yield
关键字是一个语法糖,编译器需要完成生成迭代器的繁重工作。(我说得对吗?(
那么,为这个语法糖生成的实现代码是什么呢。
生成的代码取决于原始代码,但一般来说,会生成一个跟踪集合当前状态的状态机。
请参阅收益声明的实现,这是Eric Lippert的回答,也是Jon Skeet的博客文章。