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