Dzisiaj bierzemy się za pętlę ”foreach”. Pętla wygląda następująco:

List<string> listaElementów = new List<string>();
Foreach(string element in listaElementów)
{
	// wykonaj powtarzalny kawałek kodu
	Console.WriteLine("pętla wykonuje się");
}

Jest to pętla, która jest trochę inna od pozostałych. Została stworzona, aby przechodzić przez elementy list. Już tłumaczę dokładnie.

W przypadku innych pętli np. “while” lub “do while” celem jest powtarzanie jakiegoś kawałka kodu do momentu, aż warunek, który jest sprawdzany przy każdym przejściu pętli nie powie inaczej.

W przypadku pętli “for” chodzi o to, żeby przejść pętlę określoną ilość razy np. przejść przez wszystkie osoby w dzienniku i sprawdzić, czy każda z nich jest obecna na zajęciach.

Pętla ”foreach” została zaprojektowana właśnie do takich zadań jak wymienione wyżej w przykładzie. Jak rozłożymy sobie słowo kluczowe ”foreach” uzyskamy “dla każdego”, co jest doskonałym odzwierciedleniem kiedy należy stosować właśnie tą pętlę, czyli dla każdego elementu listy sprawdź np. obecność.

W przypadku tej pętli, aby można było ją zastosować element, po którym chcemy przechodzić w pętli musi spełniać pewne wymagania:

Lista/typ/elementy, po których chcemy przechodzić muszą mieć metodę publiczną bezparametrową “GetEnumerator” i musi on zwracać ten jeden element listy. Bez tego nie da się zastosować na nich pętli ”foreach”. Przykład: mamy listę uczniów w klasie. Ta lista musi mieć możliwość wywołania metody GetEnumerator, która zwróci ucznia, ponadto uczeń musi mieć właściwość publiczną “Current” i publiczną metodę “MoveNext”, która zwraca “true” lub “false” tak, żeby po jej wykonaniu można było dostać kolejnego ucznia.

Pętla po słowie kluczowym ”foreach” posiada  “()”, w których definiujemy typ pojedyńczego elementu, następnie słowo kluczowe “in” oraz listę elementów. Czas na przykład:

List<Uczen> listaUczniow = new List<Uczen>();
listaUczniow.Add(new Uczen(){imie: "Adam", nazwisko: "Kowalski"});
listaUczniow.Add(new Uczen(){imie: "Ania", nazwisko: "Nowak"});
//mamy listę 2 uczniów

foreach( Uczen jedenUczen in listaUczniow)
{
	Console.writeLine(jedenUczen.Imie);//wypisanie imienia ucznia.
}

Jak widać mamy tutaj słowo kluczowe “foreach”, następnie “(” potem pojedyńczy typ naszej listy “Uczen”, następnie zmienną, w której będzie pojawiał się konkretny kolejny uczeń z listy przy każdym przejściu pętli “jedenIUczen” następnie słowo kluczowe “in” oraz lista, po której przechodzimy “listaUczniow”.

Innym przykładem może być zwykła lista, gdzie użyty został typ System.Span (czyli zakres).

Span<int> oceny = new int[] { 4,4,6,2,1,5};
foreach (int ocena in oceny)
{
	Console.Write(ocena);
}

P.S.

Spróbój stworzyć kilka przykładów pętli “foreach” i poćwiczyć w praktyce jej użycie. Wynikami tych ćwiczeń możesz podzielić się w komentarzach lub pisząc do mnie maila 🙂 gdzie chętnie spojrzę, czy wszystko zrozumiałeś poprawnie.

Zostawiam też link do oficjalnej strony Microsoftu, gdzie również można znaleźć informację o pętli “foreach”.

Link żeby poszerzyć wiedzę