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

IEnumerable<T>インタフェースの実装

 

ttkcd.hatenablog.com

 

に記載の通り、IEnumerable<T>インタフェースは抽象メソッドGetEnumerator()を持っているため、IEnumerable<T>インタフェースを実装する際には、GetEnumerator()を実装する必要がある。
また、IEnumerator<T>を継承するとIEnumeratorも継承することになるため、IEnumeratorのメソッドも実装する必要がある。

internal class MyCollection<T>:IEnumerable<T>
{
    private List<T> elems;
    
    internal MyCollection(int num)
    {
        elems = new List<T>(num);
    }
    
    public IEnumerator<T> GetEnumerator()
    {
        foreach (var elem in elems) yield return elem;
    }
    
    public IEnumerator GetEnumerator()
    {
        return GetEnumerator();
    }
}