【发布时间】:2013-10-30 16:33:24
【问题描述】:
为什么Enumerator 不跟踪同一函数中的项目,但如果MoveNext 操作发生在其他函数中,则不跟踪?
例子:
public static void Test()
{
var array = new List<Int32>(new Int32[] { 1, 2, 3, 4, 5 });
var e = array.GetEnumerator();
e.MoveNext();
e.MoveNext();
Console.WriteLine(e.Current); // 2
Incremenet(e);
Console.WriteLine(e.Current); //2
}
static void Incremenet(IEnumerator<Int32> e)
{
Console.WriteLine("Inside " + e.Current); //2
e.MoveNext();
Console.WriteLine("Inside " + e.Current); // 3
e.MoveNext();
Console.WriteLine("Inside " + e.Current); //4
}
我原本希望在最后一个 CW 中获得 5,但我获得了 2,就像它从未增加过一样。为什么函数返回时忘记了Increment函数里面的MoveNext?
干杯。
【问题讨论】:
标签: c# ienumerable ienumerator