Per den Titel - gibt es gute integrierte Optionen in C#/.NET für ausfallsichere Iteration über eine IList oder ein IDictionary?
Ich habe Probleme mit einem Code, der dem folgenden ähnelt:
IList<Foo> someList = new List<Foo>();
//...
foreach (Foo foo in someList) {
if (foo.Bar) {
someList.remove(foo);
}
}
die nach dem ersten Mal, wenn foo.Bar wahr ist, Folgendes auslöst:
Type: System.InvalidOperationException
Message: Collection was modified; enumeration operation may not execute.
Ich weiß, dass die einfachste Lösung darin besteht, Folgendes zu tun foreach (Foo foo in new List<Foo>(someList))
aber es ist lästig, jedes Mal daran denken zu müssen, wenn so etwas auftaucht.
Kommen von einem Java-Hintergrund, das ist etwas, das ordentlich mit einem CopyOnWriteArrayList/ConcurrentHashMap behandelt werden kann (ich bin mir bewusst, dass es andere Strafen mit diesen Listen verbunden sind.) Gibt es ein Äquivalent in c#, die ich nur nicht bewusst?