【C#】IEnumerableインタフェースの実装

IEnumerableインタフェースの実装

 

ttkcd.hatenablog.com

 

に記載の通り、IEnumerableインタフェースは抽象メソッドGetEnumerator()を持っているため、IEnumerableインタフェースを実装する際には、GetEnumerator()を実装する必要がある。

internal class MyCollection : IEnumerable
{
    private readonly int[] m_array;
    
    internal MyCollection(int number)
    {
        m_array = new int[number];
        for (int i = 0; i < number; ++i)
        {
            m_array[i] = i;
        }
    }
    
    IEnumerator IEnumerable.GetEnumerator()
    {
        // IEnumeratorインタフェースを返す処理
    }
}

GetEnumerator()の実装


IEnumerator IEnumerable.GetEnumerator()
{
    return m_array.GetEnumerator();
    for  (int i = 0; i < m_array.Length; ++i)
    {
        yield return m_array[i];
    }
    foreach (var item in m_array)
    {
        yield return item;
    }
}