Distinção entre iterador e enumerador

ma pergunta de entrevista para um trabalho do .NET 3.5 é "Qual é a diferença entre um iterador e um enumerador"

Esta é uma distinção essencial a ser feita, com o LINQ etc.

De qualquer forma, qual é a diferença? Não consigo encontrar uma definição sólida na rede. Não se engane, posso encontrar o significado dos dois termos, mas recebo respostas ligeiramente diferentes. Qual seria a melhor resposta para uma entrevista?

IMO, um iterador "itera" sobre uma coleção e um enumerador fornece a funcionalidade para iterar, mas isso precisa ser chamad

Além disso, usando a palavra-chave yield é dito para salvar o estado. O que exatamente é esse estado? Existe algum exemplo desse benefício?

questionAnswers(8)

yourAnswerToTheQuestion