La reutilización de un Ienumerable da como resultado un resultado falso, por ejemplo.
-
30-10-2019 - |
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:
- Enlace a la implementación de IEnumerable: https://gist.github.com/814352
- Enlace a la implementación de IEnumerator: https://gist.github.com/814354
- .. y finalmente la implementación del analizador de texto subyacente: https://gist.github.com/814358
.. es básicamente un Ienumerable que me permite iterar sobre las palabras dentro de una cadena dada.
No hay solución correcta