首頁 >後端開發 >C++ >`IEnumerable` 和 `IEnumerator` 如何在 C# 中實現高效率迭代?

`IEnumerable` 和 `IEnumerator` 如何在 C# 中實現高效率迭代?

Patricia Arquette
Patricia Arquette原創
2025-01-09 12:33:40988瀏覽

How do `IEnumerable` and `IEnumerator` enable efficient iteration in C#?

深入理解C#中的IEnumerableIEnumerator:高效迭代的利器

在軟體開發中,高效迭代物件集合至關重要。 .NET架構為此提供了兩個關鍵介面:IEnumerableIEnumerator

IEnumerable介面

IEnumerable介面表示一個物件集合。它定義了一個單一方法GetEnumerator(),該方法傳回一個IEnumerator物件。任何允許迭代其元素的類別都可以實現此介面。

IEnumerator介面

IEnumerator介面表示一個枚舉器,這是一個可用於迭代物件集合的物件。它定義了兩個方法:MoveNext()Current()MoveNext()將枚舉器推進到集合中的下一個元素,並傳回一個布林值,指示迭代器是否已到達集合的末端。 Current()傳回集合中的目前元素。

IEnumerableforeach語句的用法

IEnumerable通常與C#中的foreach語句結合使用。 foreach語句提供了一種簡潔方便的方式來迭代物件集合。編譯器會自動呼叫集合物件的GetEnumerator()方法,並使用產生的IEnumerator物件迭代其元素。

為什麼要用IEnumerableIEnumerator

效率: IEnumerableIEnumerator允許透過避免將整個集合載入到記憶體中來實現高效迭代。它們提供了一種機制,可以逐一存取集合的元素,從而減少記憶體開銷並提高效能。

可擴充性: IEnumerableIEnumerator是標準接口,任何類別都可以實現它們。這允許開發人員創建可以以一致的方式輕鬆迭代的自訂類,而不管其內部實作如何。

範例用法

考慮以下範例:

<code class="language-csharp">using System;
using System.Collections.Generic;

public class MyCollection : IEnumerable<int>
{
    private List<int> _data = new List<int>();

    public IEnumerator<int> GetEnumerator()
    {
        foreach (int item in _data)
        {
            yield return item;
        }
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }

    public void Add(int value)
    {
        _data.Add(value);
    }
}

public class Example
{
    public static void Main(string[] args)
    {
        MyCollection myCollection = new MyCollection();
        myCollection.Add(1);
        myCollection.Add(2);
        myCollection.Add(3);

        foreach (int item in myCollection)
        {
            Console.WriteLine(item);
        }
    }
}</code>

在這個範例中,MyCollection類別實作了IEnumerable<int>並定義了一個自訂枚舉器來迭代其元素。然後,foreach語句能夠迭代集合並將元素列印到控制台。

以上是`IEnumerable` 和 `IEnumerator` 如何在 C# 中實現高效率迭代?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn