10 Stimmen

Wie kann foreach wissen, dass die iterierte Sammlung geändert wurde?

Als ich die Sammlung änderte, iterierte ich durch mit foreach habe ich eine Ausnahme erhalten. Also bin ich einfach neugierig, wie foreach (oder die Laufzeitumgebung) dies erkennen. Ist es möglich, dies mit einem allgemeinen Objekt zu tun?

14voto

Jon Skeet Punkte 1325502

Die Sammlung selbst muss dies erkennen. In den Sammlungen der Standardbibliothek wird dies durch eine interne Versionsnummer erreicht, die bei jeder Operation geändert und vom Iterator bei jeder Iteration überprüft wird (d.h. bei jedem Aufruf von MoveNext prüft er, ob die Versionsnummer die gleiche ist wie bei der Erstellung des Iterators).

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