首頁 > 後端開發 > C++ > c#'產量”關鍵字如何簡化命令式迭代?

c#'產量”關鍵字如何簡化命令式迭代?

Susan Sarandon
發布: 2025-01-27 17:31:10
原創
336 人瀏覽過

How Does the C# `yield` Keyword Simplify Imperative Iteration?

理解C#'S yield關鍵字用於有效迭代

> 在C#2.0中介紹的

> yield關鍵字顯著簡化了命令。 考慮此範例,說明了其在創建IEnumerable<T>>的用途:

<code class="language-csharp">IEnumerable<object> FilteredList()
{
    foreach(object item in FullList)
    {
        if(IsItemInPartialList(item))
            yield return item;
    }
}</code>
登入後複製
此功能在記憶體中沒有建立完整的清單。相反,它返回迭代器。每次呼叫程式碼中的循環請求下一個項目時,

>函數都會從其關閉的位置恢復執行,評估下一個foreach並僅在滿足條件時返回。 FilteredList()讓我們檢查一個更簡單的範例:item

偵錯此程式碼表示

>不會一次完全執行。 它僅執行直到擊中a
<code class="language-csharp">public void Consumer()
{
    foreach(int i in Integers())
    {
        Console.WriteLine(i);
    }
}

public IEnumerable<int> Integers()
{
    yield return 1;
    yield return 2;
    yield return 4;
    yield return 8;
    yield return 16;
    yield return 16777216;
}</code>
登入後複製
,並傳回單一值。

> Integers()的下一個迭代> yield return恢復,繼續從下一個foreach>。 Consumer()繼續 Integers()使用yield return>的關鍵好處:

yield

簡化的迭代:避免手動實現,從而產生更清潔,更簡潔的程式碼。
  • >記憶體效率:>值是按需產生的,最小化記憶體使用情況,在處理大型資料集時尤其有益。 IEnumerable> IEnumerator
  • 提高的可讀性:程式碼的意圖變得更加清晰,尤其是在處理迭代過程和資料流時。 生成序列的邏輯直接嵌入方法中。
  • 以上是c#'產量”關鍵字如何簡化命令式迭代?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

  • 本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    作者最新文章
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板