为什么 anEnumerator
不跟踪同一函数中的项目,但如果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,就像它从未增加一样。为什么函数返回时忘记了函数MoveNext
内部?Increment
干杯。