c#yield
關鍵字:優化集合迭代
關鍵字提供了一種強大的機制,可為收集創建有效的迭代器。 當需要僅揭示一部分集合的一部分的大型數據集或方案時,這一點尤其重要。 yield
>
yield
的功能
>啟用方法可以返回一個yield
>對象。 該界面表示可以在使用aIEnumerable
循環上迭代的元素序列。 至關重要的是,foreach
不需要立即將整個集合加載到內存中。
yield
>相反,當a
的方法迭代時,該方法僅執行直到遇到foreach
>語句。 然後,它返回產量的值並暫停其執行。 該方法僅在迭代中請求下一個元素時才恢復執行。 這本質上是一台狀態機,可按需生成值。 yield
>
yield return
考慮從較大列表中的方法過濾元素:
>在這裡,
<code class="language-csharp">IEnumerable<object> FilteredList(IList<object> fullList, IList<object> partialList) { foreach (object item in fullList) { if (partialList.Contains(item)) yield return item; } }</code>
>和FilteredList
中的元素。 它一次處理一個元素,僅產生符合條件的元素。 這避免了在內存中創建一個新的,潛在的大型,過濾的列表。 fullList
>
partialList
fullList
實用應用
關鍵字在以下方面找到了廣泛的用途
yield
有效的數據檢索:
從數據庫或其他外部來源檢索數據,從而減少內存消耗並提高性能。 考慮從數據庫讀取的示例:此方法一次獲取和處理數據庫行,比將整個結果設置為內存要高得多。
以上是C# `yield` 關鍵字如何實現集合的高效迭代?的詳細內容。更多資訊請關注PHP中文網其他相關文章!