6

可能重复:
yield 语句实现

我看过msdn 文档,上面写着:

yield 关键字向编译器发出信号,表明它出现的方法是一个迭代器块。编译器生成一个类来实现迭代器块中表达的行为。在迭代器块中,yield 关键字与 return 关键字一起使用,为枚举器对象提供值。

所以这意味着yield关键字是一种语法糖,编译器完成了生成迭代器的繁重工作。(我对么 ?)

那么这个语法糖生成的实现代码是什么。

4

1 回答 1

5

生成的代码取决于原始代码,但一般来说,会生成一个状态机来跟踪集合的当前状态。

请参阅yield statement implementation、Eric Lippert 的回答和 Jon Skeet 的博客文章

于 2011-11-27T12:26:51.367 回答