GetEnumerator
and GetAsyncEnumerator
return a new instance of an enumerator. As a result...
var e1 = sequence.GetEnumerator();
var e2 = sequence.GetEnumerator();
Console.WriteLine(e1 == e2); // false!!!
Corollary1: if we call e1.MoveNext()
, the Current
value changes in e1
but not in e2
.
Corollary2: The following will produce surprising results.
while(sequence.GetEnumerator().MoveNext())
{
Console.WriteLine(sequence.GetEnumerator().Current); // always empty
Corollary3: If I ruled the world, we might rename it to CreateNewEnumerator
.