讓我們有這樣的代碼:當調用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
}
並在主要方法:
MyList list = new MyList();
foreach (int i in list)
{
Console.WriteLine(i);
}
foreach (int i in list)
{
Console.WriteLine(i);
}
爲什麼第二foerach不起作用?和「我」不會再次初始化?
是這樣的:Reset方法應該在執行foreach之前自動調用?
爲什麼它不會在這裏打電話?
有沒有解決? :( – 2010-10-16 05:56:02
我認爲它只存在與COM的互操作性,普通的.net代碼不會使用它,幾乎所有的實現都會拋出異常 – CodesInChaos 2010-10-16 10:37:07