2010-07-07 69 views

回答

11

收益率自動爲您創建一個枚舉器。

http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx

所以,你可以這樣做

//pseudo code: 

while(get_next_record_from_database) 
{ 
    yield return your_next_record; 
} 

它可以讓你快速創建一個對象集合(一個枚舉),您可以通過循環和檢索記錄。 yield return語句處理爲您創建枚舉器所需的所有代碼。

yield return語句的很大一部分是,在將集合返回給調用方法之前,您不必加載集合中的所有項目。它允許收集lazy loading,所以你不會一次支付訪問懲罰。

何時使用Yield Return

1

yield用作語法糖,用於從一個方法返回一個IEnumerable<T>IEnumerator<T>對象,而無需實現您自己的實現這些接口的類。

+0

??爲什麼downvotes?我錯了嗎? – spoulson 2010-07-07 13:48:39

+0

是的,因爲它不同於自己創建IEnumerable並返回它。 – 2010-07-07 13:50:09

+2

這個答案沒有錯。 – 2010-07-07 13:53:05

4

產量遠遠超過了合成糖或創建IEnumerables的簡單方法。

欲瞭解更多信息,我會看看賈斯汀埃裏奇的博客has a great article explaining more advanced usages of yield

+0

絕對如此。直到你完全理解它是如何爲你創建狀態機的,你才能完全理解「產出」。它非常強大。 – 2010-07-07 13:54:23

+0

該死的幫助。我知道這是舊的,但這個帖子真的爲我做了。 – Terrance 2010-08-12 14:37:32

1

我寫了一個簡單的例子,展示瞭如何在收集的訪問週期中調用yield塊。看看here

相關問題