你能幫我理解yield
關鍵字asp.net(C#)
。什麼是收益?什麼是在asp.net中使用收益的好處?
回答
收益率自動爲您創建一個枚舉器。
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。
yield
用作語法糖,用於從一個方法返回一個IEnumerable<T>
或IEnumerator<T>
對象,而無需實現您自己的實現這些接口的類。
yield
允許您發出一個IEnumerable,您通常會返回更具體的類型(如IList)。
This is a pretty good example of how it can simplify your code and clarify your intent。至於你在哪裏使用它,你需要遍歷一個集合的頁面上的任何地方,你可能會使用一個返回IEnumerable來代替List/Dictionary /等的方法。
產量遠遠超過了合成糖或創建IEnumerables的簡單方法。
欲瞭解更多信息,我會看看賈斯汀埃裏奇的博客has a great article explaining more advanced usages of yield。
絕對如此。直到你完全理解它是如何爲你創建狀態機的,你才能完全理解「產出」。它非常強大。 – 2010-07-07 13:54:23
該死的幫助。我知道這是舊的,但這個帖子真的爲我做了。 – Terrance 2010-08-12 14:37:32
我寫了一個簡單的例子,展示瞭如何在收集的訪問週期中調用yield塊。看看here。
- 1. 額外收益的優勢是什麼?
- 2. 什麼是平均收益率無(tornado.gen.moment)
- 3. 作爲作業有什麼收益? myVar的=(收益率)
- 4. JS發電機:「收益率」與「收益率」有什麼不同?
- 5. 循環數據與收益和不收益有什麼不同
- 6. 是什麼收益之間的差異本VS回報新類()
- 7. 收益總是被調用
- 8. 新手問題,這裏'收益'是什麼意思?
- 9. 收益率是多少?
- 10. Python收益率與Ruby收益率
- 11. 什麼是PWA的商業利益
- 12. 爲什麼我的「收益率」不起作用?
- 13. 什麼是「對象數據庫」,什麼時候使用它是有益的?
- 14. 與客戶共享iPhone應用程序收益的最佳方式是什麼?
- 15. 使用收益遞歸
- 16. 爲什麼不提供和收益不起作用
- 17. 什麼是計算益智遊戲時間的好算法?
- 18. 什麼類的不屈服的回報收益
- 19. 有人可以解釋爲什麼嵌套的收益率執行(C#收益率回報)嗎?
- 20. 爲什麼我會收到無益的減法結果?
- 21. 爲什麼我會得到負面的信息收益?
- 22. 「收益回報」概念的名稱是什麼? IEnumerable,迭代器,發生器?
- 23. 是什麼namedtuple收益和其類型名稱參數之間的區別?
- 24. 在VBA中使用收益函數
- 25. 收益是不工作的除了application.html.erb
- 26. Tornado的「收益率」與asyncio的「收益率」之間的區別?
- 27. 什麼具體類型'收益回報'回報?
- 28. 與常規方法相比,塊可以獲得什麼收益?
- 29. C中的收益率#
- 30. asyncio中的合作收益
??爲什麼downvotes?我錯了嗎? – spoulson 2010-07-07 13:48:39
是的,因爲它不同於自己創建IEnumerable並返回它。 – 2010-07-07 13:50:09
這個答案沒有錯。 – 2010-07-07 13:53:05