C# FOREACH


Nasza kolejna lekcja tyczy się kolejnej pętli w C#, otóż poznałeś już pętle: for, do-while oraz while, jeżeli programowałeś w innych językach, może ci się wydać dziwne występowanie jeszcze jednej pętli w C#, ale nic w tym dziwnego, tylko same pożyteczne rzeczy. Tą pętlą o której mowa to pętla foreach. Najogólniej mówiąc pętla foreach, przełącza się kolejno pomiędzy elementami kolekcji. W naszym przypadku tą kolekcją będzie tablica jedno wymiarowa. Zaczniemy tradycyjnie od ogólnej deklaracji pętli foreach.

foreach(typ_elementu nazwa in kolekcja)
{

}

Typ_elementu jest to typ do jakiego będzie przypisywana każda kolejna wartość kolekcji, ‘nazwa’ analogicznie to nazwa tego elementu. Kolekcja to kolekcja, czyli np. tablica. Poniżej znajduje się prosty program który ukazuje działanie pętli foreach, ów pętla ma za zadanie wyświetlanie kolejno elementów tablicy.

Początek kodu:
using System;


class Pokaz
{
public static void Main()
{
int[] tablica = { 143, 56, -12, 67, 0, 81, 41, 21222, -4, 3 };


foreach(int x in tablica)
{
Console.WriteLine(„Kolejny element tablic: ” + x);
}


}

}

Koniec kodu:

Zaczniemy od przyjrzenia się deklaracji pętli. Typ_elementu jest typu int gdyż elementy w kolekcji są typu int, jak nasza tablica, x to nazwa zmiennej do której kolejno przypisywane są wartości każdego elementu. Co zrobiła nasz pętla? Najogólniej mówiąc podczas każdej swojej kolejnej interacji przypisała do zmiennej x kolejno wartości elementów tablicy, po prostu przechodząc przez nie kolejno. Oto jak by wyglądał nasz program gdybyś my nie zastosowali pętli foreach, tylko np. pętlę for:

Początek kodu:
using System;


class Pokaz
{
public static void Main()
{
int[] tablica = { 143, 56, -12, 67, 0, 81, 41, 21222, -4, 3 };
int x ;
for(int i = 0 ; i< tablica.Length ; i++)
{
x = tablica[i];
Console.WriteLine(„Kolejny element tablic: ” + x);
}


}

}

Koniec kodu:

Teraz to już wszystko jasne w działaniu pętli foreach. Musisz pamiętać o tym, że pętla foreach służy tylko do odczytu kolejnych elementów kolekcji, nie może służyć do ich zapisu, np. błędem był by zapis.


foreach(int x in tablica)
{
x = 130;//Błąd

}

Kompilator wyrzuci błąd, gdyż zmienna ’x’ służy tylko do odczytu.

Pętla foreach jest bardzo pożyteczna, zamiast używania pętli for czy while, możesz użyć bez problemu pętli foreach do odczytu np. buforu pamięci. Uchronisz się nawet w ten sposób przed błędem przekroczenia indeksu.