NPRG038 15.6.2010
Re: NPRG038 15.6.2010
Mohl by mi prosim nekdo vysvetlit jak resit 2? o LINQu sem si neco precetl,ale neco mi porad unika
-
- Matfyz(ák|ačka) level II
- Příspěvky: 65
- Registrován: 12. 1. 2007 22:22
- Typ studia: Informatika Mgr.
- Kontaktovat uživatele:
Re: NPRG038 15.6.2010
Ja tomu rozumim tak, ze foreach spousti metodu GetEnumerator() toho vytvorenyho var list, coz je nejaka kolekce ktera to umoznuje.
A prochazi to tim zpusobem, ze pri kazdym pruchodu to vrati jeden yield return z tech returnu ktere jsou v tele GetEnumerator() - tzn. ze se provadi prikazy v tele toho GetEnumerator() nez se narazi na yield return, ktery byl vybran do te kolekce (napriklad where x>1 ho mohlo vyradit) atd. dokud se neprojde cela kolekce=vsechny returny.
Je dulezite si uvedomit, ze telo GetEnumerator a foreach bezi paralelne - GetEnumerator vraci kolekci, ale kazdy prvek zvlast, az kdyz se ho na to foreach zepta, mezitim ceka za poslednim returnem, ktery vracel.
Snad to neni moc zmatene.
A prochazi to tim zpusobem, ze pri kazdym pruchodu to vrati jeden yield return z tech returnu ktere jsou v tele GetEnumerator() - tzn. ze se provadi prikazy v tele toho GetEnumerator() nez se narazi na yield return, ktery byl vybran do te kolekce (napriklad where x>1 ho mohlo vyradit) atd. dokud se neprojde cela kolekce=vsechny returny.
Je dulezite si uvedomit, ze telo GetEnumerator a foreach bezi paralelne - GetEnumerator vraci kolekci, ale kazdy prvek zvlast, az kdyz se ho na to foreach zepta, mezitim ceka za poslednim returnem, ktery vracel.
Snad to neni moc zmatene.
Re: NPRG038 15.6.2010
Super,dik moc,velmi pomohlo
Sem netusil ze ten LINQ dotaz vyhazi yield retutrny z ty kolekce
Sem netusil ze ten LINQ dotaz vyhazi yield retutrny z ty kolekce