ienumerable を再利用すると、誤った結果が得られます。例えば、.any()
-
30-10-2019 - |
質問
私は延期された実行土地で少し迷子になりました:
Ienumerable実装クラスのインスタンスを宣言します
var wordEnumerable = new WordEnumerable(_text);
それから私はそれを反復します(最初の単語は「ロレム」です)
foreach (var word in wordEnumerable)
Console.WriteLine(word);
..コンソールに書かれています。
その後、コードで私はaをします
Console.WriteLine(wordEnumerable.Any(w => w == "Lorem"));
..そして、出力としてfalseを取得します。
今、私がforeachループの上に.any(..)部分を置いた場合、私はtrueを取得しますが、ループは2番目の単語で始まります。
じぶんの 期待 その.NETは、IENUMERABLEとその基礎となるIENUMERATORへの呼び出しごとに異なるランタイム「コンテキスト」を作成したので、干渉しません...適切な結果を得るために手作業でreset()を使用したくありませんか?
ここに何が欠けていますか?
アップデート:
- Ienumerable実装へのリンク: https://gist.github.com/814352
- IENumeratorの実装へのリンク: https://gist.github.com/814354
- ..そして最後に、基礎となるテキストパーサーの実装: https://gist.github.com/814358
..それは基本的に、特定の文字列内の単語を反復することができるようにするためのienumerableです。
正しい解決策はありません
所属していません StackOverflow