C# biedt standaard control-flow constructen — voorwaarden (if, ), lussen (, , ), en vertakkingen (, , ) — plus moderne verbeteringen zoals switch expressions en pattern matching die code compacter maken.
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",
};
De moderne switch expression is compact (retourneert een waarde, geen break), en ondersteunt krachtig pattern matching (matching van types, voorwaarden, en meer) — een grote verbetering ten opzichte van de uitgebreide traditionele 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 (itereren over elke IEnumerable) is de idiomatische lus voor collecties.
foreach (var item in items)
{
if (item.Skip) continue; // next iteration
if (item.Stop) break; // exit loop
}
return result; // exit method
Control flow is het fundamentele mechanisme voor het uitdrukken van logica in elk programma, dus het begrijpen van C#'s constructen is essentiële dagelijkse kennis.
Hoewel de basis standaard is, zijn moderne C# verbeteringen het waard om te kennen en te gebruiken: de switch expression (C# 8+) is een significante verbetering ten opzichte van de traditionele switch — compact, waarde-retournerend, geen fall-through bugs (geen vergeten break), en ondersteunend pattern matching (matching op types, voorwaarden, waarden, en structuur), wat complexe voorwaardelijke logica veel schoner maakt dan geneste if-else ketens.
De null-coalescing operators (??, ??=) bieden schone null-afhandeling, en foreach is de idiomatische manier om collecties te itereren.
Het kennen van deze constructen en het prefereren van de moderne, meer expressieve vormen (switch expressions met pattern matching boven uitgebreide switch statements, null-coalescing voor standaardwaarden) is dagelijkse kennis voor het schrijven van schone, idiomatische C#.
De switch expression en pattern matching in het bijzonder weerspiegelen de evolutie van modern C# naar meer functionele, compactere code, wat ze belangrijk maakt om te begrijpen zowel voor het schrijven van betere code als voor het lezen van huidige C# codebases die deze functies uitgebreid gebruiken.