vamos a tener este código:¿Cuándo se llama al método IEnumerator.Reset()?
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
}
Y En el Método principal:
MyList list = new MyList();
foreach (int i in list)
{
Console.WriteLine(i);
}
foreach (int i in list)
{
Console.WriteLine(i);
}
Por qué la segunda foerach no funciona ?? y la "i" no se inicializa de nuevo?
Es cierto: ¿El método de reinicio debe invocarse automáticamente antes de que se ejecute foreach?
¿por qué no llama aquí?
¿No hay solución? :( –
Creo que solo existe para la interoperabilidad con COM. El código .net normal no lo usa, y casi todas las implementaciones lanzan una excepción. – CodesInChaos