Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
ajtacek
Člen
Avatar
ajtacek:23.1.2015 20:58

Ahoj,mohl by mi prosím někdo říct (nějakým lehčím způsobem) jak funguje foreach.Byl jsem teď u jedné kapitoly,kde bylo něco jako

foreach (string s in simpsonovi) a vůbec nechápu k čemu mi to je i když jsem si pročítal článek víckrát.Budu rád jestli mi to třeba někdo vysvětlí na jiným způsobu a trochu víc podrobněji.Za všechny rady děkuji :) .

 
Odpovědět
23.1.2015 20:58
Avatar
Odpovídá na ajtacek
Lukáš Křehula:23.1.2015 21:03

Třeba jak píšeš máš pole simpsonovi

string[] simpsonovi = new string[] { "Homer", "Marge", "Lisa", "Bart", "Maggie" };

a foreach udělá to, že projde celé pole a všechny hodnoty zapíše do té proměnné s
takže v s bude:

s = Homer
s = Marge
s = Lisa
s = Bart
 
Nahoru Odpovědět
23.1.2015 21:03
Avatar
Selak
Člen
Avatar
Odpovídá na ajtacek
Selak:23.1.2015 21:26

Přesně jak napsal Kaczmi.Vše se ti uloží do té dané proměnně,kterou pak můžeš vypsat. Třeba takhle :

{
          string[] simpsonovi = new string[] {"Homer","Marge","Lisa","Bart","Maggie" };

          foreach (string s in simpsonovi)
          {
              Console.WriteLine("Toto jsou simpsonovi : {0}", s);
          }
          Console.ReadKey();
      }

a výstup si můžeš zkusit. Foreach se ti bude hodit i do budoucna využiješ ho v OOP více jak třeba for a četl jsem,že i u kolekcí,ale to si nejsem jistý.

Editováno 23.1.2015 21:28
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
23.1.2015 21:26
Avatar
ajtacek
Člen
Avatar
ajtacek:23.1.2015 21:29

Oboum děkuji, už to docela chápu :). A výstup jsem si zkusil.

 
Nahoru Odpovědět
23.1.2015 21:29
Avatar
sorg
Člen
Avatar
sorg:30.1.2015 10:42

Řečeno stručnš, je to vylepšený cyklus for (nemusíš se starat o tolik věcí). Cyklus for se zapisuje třeba jako

for(přístupová proměnná v kolekci; podminka pro přístupovou proměnnou; postup k dalšímu prvku na základě hodnoty přístupové proměnné)
{
tuná se vytahuje prvek z kolekce na základě přístupové proměnné a dělají se s ním různé kejkle
}

Když to zkusíš trošku abstrahovat tak potřebuješ kolekci, něco co ti postoupí k dalšímu prvku a něco co ti vrátí hodnotu prvku v kolekci.
Když chceš použít foreach musíš mít kolekci, která je schopna ti vrátit něco co ti umožní procházení touto kolekcí. v Cyklu for je to třeba přístupová proměnná. Ve foreach se zavolá na kolekci metoda GetEnumerator, to znamená, že daná kolekce musí implementovat interface IEnumerable. Get Enumerator ti vrátí nco co je typu IEnumerator, to je interface, který obsahuje dvě metody. Current(), ta ti vyhodí aktuální hodnotu a MoveNext(), která se posune na další prvek v kolekci.

Pro podrobnější informace se mrkni na MSDN a hledej klíčové slovo yield a interfacy IEnumerable a IEnumerator.

 
Nahoru Odpovědět
30.1.2015 10:42
Avatar
Ježek Vít :12.1.2021 22:24

Jsem tupější tužka v penále :-D ale foreach mi pořád nedá spát..
Jsem typ, který problém musí pochopit do hloubky, než ho pochopí jak funguje (s málem se nespokojím), takže mě čeká ještě dost hledání a chápání :-D 8-)

Nahoru Odpovědět
12.1.2021 22:24
Nemyslím, tedy nejsem.
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 6 zpráv z 6.