2 Stimmen

Gibt es gute IList und IDictionary-Implementierungen in C#, die ausfallsichere Iteration unterstützen?

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X