Quando o método IEnumerator.Reset () é chamado?

vamos ter este código:

class MyList : IEnumerable, IEnumerator
{
    int[] A = { 1, 2, 3, 4, 5 };
    int i = -1;

    #region IEnumerator Members

    public object Current
    {
        get { return A[i]; }
    }

    public bool MoveNext()
    {
        i++;
        return i < 5;
    }

    public void Reset()
    {
        i = -1;
    }

    #endregion

    #region IEnumerable Members

    public IEnumerator GetEnumerator()
    {
        return (IEnumerator)this;
    }

    #endregion
}

E no método principal:

MyList list = new MyList();
foreach (int i in list)
{
    Console.WriteLine(i);
}

foreach (int i in list)
{
    Console.WriteLine(i);
}

Por que o segundo foerach não funciona? e o "i" não inicializa novamente ??

Isso é verdade: o método Reset deve ser chamado automaticamente antes que o foreach seja executado?

por que não chama aqui ??

questionAnswers(5)

yourAnswerToTheQuestion