Diskuze: Hláška " Enumerator is not valid because collections changed
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Postni sem kód. V něm se líp hledá chyba než ve slovním popisu programu.
Kód není potřeba. Todle je přeci jasné.
Používáš foreach. Foreach funguje díky tomu, že ta kolekce implementuje IEnumerable.. IEnumerable neříká naprosto nic o tom, jak jsou data uskladněna. může to být klidně stromová struktura,.. IEnumerable říká pouze to, že LZE projít všechna data.
Foreach si zezačátku poví o Enumerátor.. představ si to jako PRST který ti ukazuje na 1 prvek... na ten prst si Foreach vola "dej mi dalsi" a ten prst se NEKAM presune,... ale nevime kam. Proste na dalsi.
Vzhledem k tomu, ze NENI specifikováno, jak jsou data uskladněna, tak
můžou být třeba uložena ve stromu (datova struktura) a tak by se ti asi
nelibiblo, kdyby si byl treba v nejakym "listu" stromu a behm toho prochazeni ti
nekdo smazal parenta ze?
Z toho duvodu se u Foreache kontroluje jesti nedoslo ke zmene.. protooze by logicky mohlo dojit k naruseni prochazeni.
Proto nemuzes nijak menit kolekci, kterou prochazis foreachem. Proto je foreach pomalejsi nez prosty FOR - protoze v kazde iteraci kontroluje, jestli nedoslo ke zmene a pokud dosĺo, vyhoédi presne takovouto exception.
proto pouzij FOR a nebo nemen data.
zapomnel jsem hajlajt. Tendle system je tak debilni boze.
Zobrazeno 4 zpráv z 4.