同じ関数内のアイテムを追跡しないのに、他の関数で操作が発生した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 になりました。関数が戻るときに関数のMoveNext
内部が忘れられるのはなぜですか?Increment
乾杯。