C# pruža standardne kontrolne tokove — uvjetnu logiku (if, ), petlje (, , ) i grananje (, , ) — plus moderne izmjene kao switch izrazi i pattern matching koji čine kod koncizniji.
switchforforeachwhilebreakcontinuereturnif (score >= 90)
grade = "A";
else if (score >= 80)
grade = "B";
else
grade = "F";
// ternary and null-coalescing
string status = age >= 18 ? "adult" : "minor";
string name = input ?? "default"; // ?? — use default if input is null
name ??= "fallback"; // ??= assign if null
// traditional switch
switch (day)
{
case "Sat":
case "Sun":
type = "weekend";
break; // break required (no fall-through)
default:
type = "weekday";
break;
}
// switch EXPRESSION (C# 8) — concise, returns a value, with pattern matching
string type = day switch
{
"Sat" or "Sun" => "weekend",
_ => "weekday", // _ = default
};
// pattern matching in switch
string describe = obj switch
{
int n when n > 0 => "positive int",
string s => $"string of length {s.Length}",
null => "null",
_ => "other",
};
Moderni switch izraz je koncizan (vraća vrijednost, bez break), i podržava moćan pattern matching (podudaranje tipova, uvjeta i više toga) — značajno poboljšanje u odnosu na opširni tradicionalni switch.
for (int i = 0; i < 10; i++) { }
foreach (var item in collection) { } // iterate any IEnumerable
while (condition) { }
do { } while (condition); // runs at least once
foreach (iteriranje bilo kojeg IEnumerable) je idiomatska petlja za kolekcije.
foreach (var item in items)
{
if (item.Skip) continue; // next iteration
if (item.Stop) break; // exit loop
}
return result; // exit method
Kontrolni tok je osnovni mehanizam za izražavanje logike u svakom programu, pa je razumijevanje C# konstrukata temeljno svakodnevno znanje.
Dok su osnove standardne, moderne C# izmjene vrijede poznavanja i korištenja: switch izraz (C# 8+) je značajno poboljšanje u odnosu na tradicionalni switch — koncizan, vraća vrijednost, bez bugova zbog padanja kroz slučajeve (bez zaboravljenih break), i podržava pattern matching (podudaranje tipova, uvjeta, vrijednosti i strukture), što čini složenu uvjetnu logiku daleko čistijom od ugniježđenih if-else lanaca.
Null-coalescing operatori (??, ??=) pružaju čisto rukovanje null vrijednostima, a foreach je idiomatski način iteriranja kroz kolekcije.
Znanje ovih konstrukata i preferiranje modernih, izrazitijih oblika (switch izrazi s pattern matchingom preko opširnih switch iskaza, null-coalescing za zadane vrijednosti) je svakodnevno znanje za pisanje čistog, idiomatskog C#.
Switch izraz i pattern matching posebno odražavaju evoluciju modernog C# prema funkcionalnijem, konciznijem kodu, čineći ih važnima za razumijevanje kako za pisanje boljeg koda tako i za čitanje trenutnih C# kôdnih baza koje opsežno koriste ove značajke.