'yield'关键字是一个语法糖吗?它的实施是什么?

时间:2011-11-27 12:23:54

标签: c# language-implementation yield-keyword

  

可能重复:
  yield statement implementation

我见过msdn docs,它说:

  

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

所以这意味着 yield 关键字是一个语法糖,编译器负责生成迭代器。 (我纠正吗?)

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

1 个答案:

答案 0 :(得分:4)

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

请参阅Eric Lippert的yield statement implementationthis answer和Jon Skeet的this blog post