タイトルごとに-IListまたはIDictionaryでのフェイルセーフ反復のためのC#/。NETの優れた組み込みオプションはありますか?
私が問題にぶつかっているのは、次のようなコードです。
IList<Foo> someList = new List<Foo>();
//...
foreach (Foo foo in someList) {
if (foo.Bar) {
someList.remove(foo);
}
}
これは、foo.Barが最初にtrueになった後に次をスローします。
Type: System.InvalidOperationException
Message: Collection was modified; enumeration operation may not execute.
簡単な回避策は実行することですforeach (Foo foo in new List<Foo>(someList))
が、それを毎回実行することを覚えておく必要があるのは面倒です。独身。時間。これが出てきます。
Javaのバックグラウンドから来ているので、CopyOnWriteArrayList / ConcurrentHashMapで適切に処理できます(これらのリストの使用に関連する他のペナルティがあることを認識しています)。C#に、私が気付いていない同等のものはありますか?