IEnumerator

Pequeño ejemplo que implementa IEnumerator con genéricos.

class IntList<T> : IEnumerable<T>
{
    private int count = 0;
    private T[] values;

    public int Count { get { return count; } }

    public IntList(int capacity)
    {
        values = new T[capacity];
    }

    public void Add(T value)
    {
        values[count] = value;
        count++;
    }

    public T this[int index]
    {
        get { return values[index]; }
        set { values[index] = value; }
    }

    public IEnumerator<T> GetEnumerator()
    {
        for (int i = 0; i < count; i++)
        {
            yield return values[i];
        }
    }

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