Avatar
Wayne
Člen
Avatar
Wayne:

Ahoj, mohl by mi někdo poradit jak vyřešit problém, když mám Grid komponentu, kterou dynamicky plním, problém nastane když vytvořím událost na button, kde se prochází tato komponenta a tahám z ní data, a na základě výsledků dat chci dynamicky vytvořit další sloupec, který dynamicky přidám do gridu, skončí to ale chybou výše

 
Odpovědět 24.11.2016 18:06
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na Wayne
Lukas C#:

Postni sem kód. V něm se líp hledá chyba než ve slovním popisu programu.

 
Nahoru Odpovědět 24.11.2016 19:17
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

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.

Editováno 24.11.2016 23:49
Nahoru Odpovědět  +5 24.11.2016 23:48
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na Lukas C#
Marian Benčat:

zapomnel jsem hajlajt. Tendle system je tak debilni boze.

Nahoru Odpovědět  -3 25.11.2016 9:16
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.