我基本上是想让我的班级能够使用foreach
. 我读了这个教程。微软_ 这似乎很简单。但是,当我想第二次迭代时遇到问题。我调试了它;事实证明它没有调用该Reset()
函数。
A级
class A : IEnumerable, IEnumerator
{
int[] data = { 0, 1, 2, 3, 4 };
int position = -1;
public object Current
{
get
{
return data[position];
}
}
public bool MoveNext()
{
position++;
return (position < data.Length);
}
public void Reset()
{
position = -1;
}
public IEnumerator GetEnumerator()
{
return (IEnumerator)this;
}
}
当我运行以下主要功能时;它从不调用Reset()
函数。所以,在一个循环之后,我再也无法迭代我的课程了。
主要的
static void Main(string[] args)
{
A a = new A();
foreach (var item in a)
{
Console.WriteLine(item);
}
Console.WriteLine("--- First foreach finished. ---");
foreach (var item in a)
{
Console.WriteLine(item);
}
}
输出:
0
1
2
3
4
--- First foreach finished. ---
Press any key to continue . . .
有什么想法吗?