Question

Je suis un peu perdu dans les terres d'exécution différée:

Je déclare une instance d'une classe d'implémentation ienuable

var wordEnumerable = new WordEnumerable(_text);

Ensuite, je l'itère dessus (le premier mot est "Lorem")

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

.. qui est écrit sur la console.

Maintenant, juste par la suite dans le code, je fais un

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

.. et obtenez une fausse sortie en tant que sortie.

Maintenant, si je mets la partie .y (..) au-dessus de la boucle foreach, j'obtiens une vraie, mais la boucle commence par le deuxième mot.

Mon attente Est-ce que .NET a créé différents «contextes» d'exécution pour chaque appel à un iennumable et son ienumerateur sous-jacent afin qu'ils n'interfèrent pas ... Je ne voudrais pas. Reset () à la main pour obtenir un résultat approprié?

Qu'est-ce que j'oublie ici?

Mise à jour:

.. C'est essentiellement un ienuable qui me permet d'itérer sur les mots dans une chaîne donnée.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top