2009-11-06 40 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

相關問題