Pregunta

Estoy un poco perdido en la tierra de ejecución diferida:

Declaro una instancia de una clase de implementación de IEnumerable

var wordEnumerable = new WordEnumerable(_text);

Luego lo itero (la primera palabra es "lorem")

foreach (var word in wordEnumerable)
                    Console.WriteLine(word);

.. que está escrito en la consola.

Ahora, a partir de entonces, en el código hago un

Console.WriteLine(wordEnumerable.Any(w => w == "Lorem"));

.. y obtener un falso como salida.

Ahora, si pongo la parte. (..) por encima del bucle foreach, obtengo una verdadera, sin embargo, el bucle comienza con la segunda palabra.

Mi expectativa ¿Fue ese ?NET crea diferentes 'contextos' de tiempo de ejecución para cada llamada a un IEnumerable y su IEnumerator subyacente para que no interfieran ... ¿No quisiera .reset () a mano para obtener un resultado adecuado?

¿Que me estoy perdiendo aqui?

Actualizar:

.. es básicamente un Ienumerable que me permite iterar sobre las palabras dentro de una cadena dada.

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top