Problem mit "foreach" in einem Dictionary

10/06/2008 - 17:05 von rade | Report spam
Hallo Leute,
vielleicht stehe ich auf dem Schlauch, aber ich verstehe nicht, warum
folgender Code einen Fehler bringt:

Dictionary<int, bool> dictInitialized = new Dictionary<int, bool>();
dictInitialized[0] = false;
foreach(int nKey in dictInitialized.Keys)
dictInitialized[nKey] = false;

Diese paar Zeilen münden in der Exception: "Die Auflistung wurde geàndert.
Der Enumerationsvorgang kann möglicherweise nicht ausgeführt werden."

Meiner Meinung nach ist dieser Fehler hier völlig unberechtigt! Muß ich mir
hier jetzt die Finger brechen für einen Workaround oder habe ich einfach nur
Tomaten auf den Augen?

Danke in Voraus,
Rade
 

Lesen sie die antworten

#1 Roman Käppeler
10/06/2008 - 18:55 | Warnen spam
rade schrieb:

vielleicht stehe ich auf dem Schlauch, aber ich verstehe nicht, warum
folgender Code einen Fehler bringt:

Dictionary<int, bool> dictInitialized = new Dictionary<int, bool>();
dictInitialized[0] = false;
foreach(int nKey in dictInitialized.Keys)
dictInitialized[nKey] = false;

Diese paar Zeilen münden in der Exception: "Die Auflistung wurde geàndert.
Der Enumerationsvorgang kann möglicherweise nicht ausgeführt werden."

Meiner Meinung nach ist dieser Fehler hier völlig unberechtigt! Muß ich mir
hier jetzt die Finger brechen für einen Workaround oder habe ich einfach nur
Tomaten auf den Augen?



Hallo,

der Code ist so leider nicht erlaubt. Du kannst aber die Keys zunàchst
in eine Liste Deines Typs umwandeln und dann gehts:


foreach (int nKey in dictInitialized.Keys.ToList<int>())
dictInitialized[nKey] = false;


oder auch


foreach (int nKey in new List<int>(dictInitialized.Keys))
dictInitialized[nKey] = false;

Ähnliche fragen