Il riutilizzo di un IEnumerable si traduce in falsi risultati, ad esempio su .any ()
-
30-10-2019 - |
Domanda
Sono un po 'perso nella terra di esecuzione differita:
Dichiaro un'istanza di una lezione di implementazione IEnumerable
var wordEnumerable = new WordEnumerable(_text);
Quindi citerò sopra (la prima parola è "Lorem")
foreach (var word in wordEnumerable)
Console.WriteLine(word);
.. che è scritto sulla console.
Ora proprio dopo nel codice faccio a
Console.WriteLine(wordEnumerable.Any(w => w == "Lorem"));
.. e ottenere un falso come output.
Ora se metto la parte .any (..) sopra il ciclo foreach ottengo un vero, tuttavia il ciclo inizia con la seconda parola.
Mio aspettativa Era che .NET crea "contesti di runtime" diversi per ogni chiamata a un Ienumerable e il suo Ienumeratore sottostante in modo che non interferiscano ... Non vorrei .reset () a mano per ottenere un risultato adeguato?
Cosa mi manca qui?
Aggiornare:
- Link all'implementazione IEnumerable: https://gist.github.com/814352
- Link all'implementazione di Ienumerator: https://gist.github.com/814354
- .. e infine l'implementazione del parser di testo sottostante: https://gist.github.com/814358
.. È fondamentalmente un ignibo che mi permette di iterare sulle parole all'interno di una determinata stringa.
Nessuna soluzione corretta