2010年10月9日土曜日

[.NET] C#ジェネリック IEnumerableの実装

小ネタですが、IEnumeratable(T)の実装についてです。
とりあえず、ソースコードです。

using System.Collections.Generic;
using System.Collections;

class MyClass<T> : IEnumerable<T>
{
    public int Count { get { return ...; } } //データの数
    public T this[int index]
    {
        get { return ...; } //indexを使ってデータを返す
    }
    public IEnumerator<T> GetEnumerator()
    {
        for (int i = 0; i < Count; i++)
        {
            yield return this[i];
        }
    }
    IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); }
}

IEnumeratorがジェネリックにも存在するので、変な記述に見えるのかもしれません。
混乱をさせるためにはusingを使わずにIEnumeratorを書けばよいかもしれません。