Cykly.
C# poskytuje běžné výrazy pro cykly, jako známe z ostatních jazyků:
- while
- do-while
- for
- foreach
while
syntaxe:
while (podmínka) příkaz[y]
Cyklus 'while' provádí opakovaně příkaz nebo celý, do složených závorek uzavřený, blok příkazů, dokud platí zadaná podmínka. Například tento kód:
int a = 0;
while (a < 3)
{
System.Console.WriteLine(a);
a++;
}
vrátí na výstupu tyto hodnoty:
- 0
- 1
- 2
do-while
syntaxe:
do příkaz[y] while (podmínka)
Cyklus 'do-while' je stejný jako cyklus 'while', akorát že podmínka je vyhodnocena až na konci bloku, který následuje po klíčovém slovu 'do'. Takže i kdyby byla podmínka před začátkem cyklu vyhodnocena jako FALSE, cyklus proběhne nejméně jednou. Například následující kód vrátí na výstupu '4':
int a = 4;
do
{
System.Console.WriteLine(a);
a++;
} while (a < 3);
for
syntaxe:
for (příkaz1; podmínka; příkaz2) příkaz[y]3
Cyklus 'for' obsahuje tři části. První - příkaz1 - se provede ještě před začátkem cyklu. Cyklus se poté začne provádět stejně, jako by se prováděl 'while', který by vypadal takto:
příkaz1
while (podmínka) {příkaz[y]3; příkaz2}
Cyklus 'for' se často používá, pokud potřebujeme měnit příkazem 2 hodnotu iterátoru inicializovaného příkazem 1. Obvykle, jako v následujícím příkladu, první přiřazení 'int a = 0' inicializuje iterátor 'a', podmínka se vyhodnotí proti konečné hodnotě '5' a druhý příkaz 'a++' změní hodnotu iterátoru.
for (int a =0; a<5; a++)
{
System.Console.WriteLine(a);
}
foreach
syntaxe:
foreach (proměnná1 in proměnná2) příkaz[y]
Cyklus 'foreach' se používá k iteraci přes všechny proměnné obsažené v proměnná2, což je objekt, který implementuje rozhraní IEnumerable. Když je 'foreach' cyklus spuštěn, zadaná proměnná1 je postupně nastavena na všechny hodnoty obsažené v proměnná2. Jak jsme viděli výše, takový cyklus může být použit pro průchod hodnot pole a může vypadat například takto:
int[] a = new int[]{1,2,3};
foreach (int b in a)
System.Console.WriteLine(b);
Hlavní nevýhodou 'foreach' cyklů je, že načtená hodnota v proměnná1 (v příkladu proměnná 'b') je pouze pro čtení (read-only).