Zitat von
Robert_G:
In .Net ist es allgemeine Praxis es zuzulassen, eine
Exception zu werfen oder die Collection auf auf readonly zu setzen. (Letzter Fall ist aber schon ziemlich krass...)
Wenn ich ohne Doku vor einer fremden Collection sitzen würde, würde ich erwarten, dass ich eine
Exception bekomme.
Bin nicht sicher ob ich es richtig verstanden habe. Guck mal wie ich es meine. Sagen wir vorher gaebe es diese Matrix (o=ungueltig, X=gueltig):
Code:
oXoXXXooooXX
[color=green]o[/color]XoXoXoo[color=red]o[/color]oXo
oXoXooooooXo
oooXooooooXo
Jetzt nehmen wir weiterhin an, dass an der rot markierten Stelle der Iterator halt gemacht hat, waehrend an der gruen markierten Stelle ein Element eingefuegt wird. Ergebnis waere folgendes:
Code:
[color=blue]X[/color]XoXXXooooXX
[color=blue]X[/color]XoXoXoo[color=red]o[/color]oXo
oXoXooooooXo
oooXooooooXo
Da der Iterator per-definitionem bei mir zeilenweise durchgeht, wuerde er beim neu eingefuegten Element (bzw. da eine Spalte immer bis zum hoechsten bisher benutzten Index aufgefuellt wird, Elementen - blau) nie mehr vorbeikommen. Diese wuerde der Benutzer also nie waehrend dieser Iteration sehen.
Das ist zwar hypothetisch, aber ich will zumindest ein definiertes Verhalten.
Zitat von
weltaran:
Entweder du hast nur fähige Benutzer deines Iterators (nur du selbst
), die wissen dass man einen reset machen muss wenn irgendwas modifiziert wird, oder du musst tatsächlich eine
Exception werfen (wenn du den Code für andere zur Verfügung stellst.
Der Code wird potentiell spaeter von anderen gepflegt. Daher muss es ein klar definiertes Verhalten geben
Wird aber auch dokumentiert, falls du darauf hinaus wolltest.