我见过msdn docs,它说:
yield关键字向编译器发出信号,表明它出现的方法是迭代器块。编译器生成一个类来实现迭代器块中表达的行为。在迭代器块中,yield关键字与return关键字一起使用,以向枚举器对象提供值。
所以这意味着 yield
关键字是一个语法糖,编译器负责生成迭代器。 (我纠正吗?)
那么这个语法糖的生成实现代码是什么。
答案 0 :(得分:4)
生成的代码取决于原始代码,但一般来说生成的状态机会跟踪集合的当前状态。
请参阅Eric Lippert的yield statement implementation,this answer和Jon Skeet的this blog post。