Por que IEumerator <T> afeta o estado de IEnumerable <T> até mesmo o enumerador nunca chegou ao fim?
Estou curioso porque o seguinte lança uma mensagem de erro (exceção fechada do leitor de texto) na "última" atribuição:
IEnumerable<string> textRows = File.ReadLines(sourceTextFileName);
IEnumerator<string> textEnumerator = textRows.GetEnumerator();
string first = textRows.First();
string last = textRows.Last();
No entanto, o seguinte executa bem:
IEnumerable<string> textRows = File.ReadLines(sourceTextFileName);
string first = textRows.First();
string last = textRows.Last();
IEnumerator<string> textEnumerator = textRows.GetEnumerator();
Qual é a razão para o comportamento diferente?