2009-11-06 41 views
0

我传统上使用的C#产量没有回报,例如:C#中的“yield”和“yield return”之间有什么区别(如果有的话)?

IEnumerable<T> Foobar() { 
    foreach(var foo in _stuff) { 
     yield foo; 
    } 
} 

但我已经看到了它写成其他的例子“产量回报FOO;”,请参阅:http://msdn.microsoft.com/en-us/library/9k7k7cf0%28VS.80%29.aspx

有什么区别吗?

+2

我不知道像这样的“收益”本身就可以编译。关键字是'收益回报'。 – 2009-11-06 03:29:27

+0

我的错误,谢谢! – 2009-11-06 03:33:53

+0

尝试先阅读参考文献 – angrifel 2009-11-06 05:03:15

回答

7

C#本身不允许yield - 只有yield returnyield break

yield是一个上下文关键字,只能在迭代器块内部识别,并且只能与returnbreak一起使用。

+0

谢谢。不知道为什么我记得能够写回报而没有回报。我猜,离C#太远了。 – 2009-11-06 03:34:33

+3

在迭代器块的原始设计中,它只是在没有回报的情况下产生,但我不相信这些版本中的任何一个实际上都向公众发布。设计团队意识到,如果他们让收益回报,那么他们就不必制作新的保留关键字。 – 2009-11-06 07:02:53

相关问题