理解 C# 的 yield
關鍵字:簡化迭代器創建
C# 中的 yield
關鍵字顯著簡化了迭代器的創建。 迭代器提供一系列值,而不需要將整個序列立即存儲在內存中。這種“惰性評估”提高了效率,尤其是在處理大型數據集時。
yield
關鍵字將標準循環轉換為迭代器方法。 此方法返回一個實現 IEnumerable<T>
接口的對象(其中 T
是序列中元素的類型)。 當調用者使用 foreach
循環進行迭代時,迭代器方法會在每次迭代時執行、暫停和恢復,這要歸功於 yield
。
這消除了通常與迭代器實現相關的手動簿記,從而產生更乾淨、更易於維護的代碼。
考慮這個例子:
<code class="language-csharp">public IEnumerable<object> FilteredList() { foreach(object item in FullList) { if(IsItemInPartialList(item)) yield return item; } }</code>
FilteredList
返回 FullList
的過濾子集。 yield return
語句在找到每個匹配項後暫停執行,將該項返回給調用者。 當請求下一個項目時,迭代器將恢復。
yield
在各種情況下都是無價的:從查詢生成序列,從文件或數據庫延遲讀取數據,以及為獨特的數據結構創建自定義迭代器。它在 C# 2.0 中的引入大大提高了迭代器開發的簡便性和效率。
以上是`yield` 關鍵字如何簡化 C# 中迭代器的建立?的詳細內容。更多資訊請關注PHP中文網其他相關文章!