Van egy speciális ismétlés, a foreach, mely képes a gyűjtemények, vagy a tömbök végigjárására. Ez azt jelenti, hogy nem szükséges ciklusutasítást szerveznünk, és nincs szükség ciklusváltozóra sem, mellyel a tömböt, vagy gyűjteményt indexelnénk. Igaz, hogy ez nem logikai ciklus, és az összetett adat szerkezetekkel még nem foglalkoztunk, de a teljesség kedvéért vizsgáljuk meg ezt a típust is! A foreach általános formája a következő:
foreach (adattípus változó in tömbnév)
{
Utasítások;
}
Az alábbi program részlet bemutatja, hogyan kell használni a foreach utasítást:
Char[] t=new char[] {’f’,’o’,’r’,’e’,’a’,’c’,’h’};
Foreach (char c in t)
{
Console.Write(”{0}”,c);
}
A példában a foreach sorra veszi a t tömb elemeit. Az aktuális tömb elem a c változóból olvasható ki. Az ismétlés az utolsó elem kiírása után áll le, vagyis mikor végigjárta a tömböt.
Természetesen a fenti program részletet for, vagy while ciklussal is megvalósíthattuk volna, de a foreach-t pontosan arra találták ki, hogy ne kelljen figyelni a tömb elemszámát és a tömb elemeit se kelljen a programozónak indexelnie. Ráadásul a foreach használatakor nem fordulhat elő, hogy túl, vagy alul indexeljük a gyűjteményt.
A következő példában a while ciklussal felírt változatot láthatjuk. Ez a program-részlet több utasításból áll, szükség van egy ciklusváltozóra, melynek az értékét növelnünk kell, és a kezdőértékről is gondoskodnunk kell.
char[] t=new char[] {’f’,’o’,’r’,’e’,’a’,’c’,’h’};
i = 0;
while (i< t.length())
{
Console.Write(”{0}”,t[i]);
i += 1;
}
A feltétel vezérelt ciklusokat a programozás számos területén használjuk. Fontosak a szöveges információk kezelésénél, a fájlkezelésnél, s minden olyan probléma megoldásánál, amikor az iterációt for ciklussal nem lehet, vagy nem célszerű megvalósítani.