Avatar
ajtacek
Člen
Avatar
ajtacek:

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
Lukáš Křehula
Redaktor
Avatar
Odpovídá na ajtacek
Lukáš Křehula:

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:

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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +2 23.1.2015 21:26
Avatar
ajtacek
Člen
Avatar
ajtacek:

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:

Ř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  +1 30.1.2015 10:42
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 5 zpráv z 5.