C# oferă construcții standard de control-flow — condiționale (if, ), bucle (, , ) și ramificări (, , ) — plus îmbunătățiri moderne cum ar fi expresiile switch și pattern matching care fac codul mai concis.
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",
};
Expresiunea switch modernă este concisă (returnează o valoare, fără break), și suportă pattern matching puternic (potrivirea tipurilor, condițiilor și multe altele) — o îmbunătățire majoră față de switch-ul tradițional verbose.
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 (iterând orice IEnumerable) este bucla idiomatică pentru colecții.
foreach (var item in items)
{
if (item.Skip) continue; // next iteration
if (item.Stop) break; // exit loop
}
return result; // exit method
Control flow-ul este mecanismul de bază pentru exprimarea logicii în fiecare program, deci înțelegerea construcțiilor C# este cunoaștere fundamentală de zi cu zi.
Despre la baze, care sunt standard, îmbunătățirile moderne ale C# merită cunoscute și folosite: expresia switch (C# 8+) este o îmbunătățire semnificativă față de switch-ul tradițional — concisă, returnând valoare, fără bug-uri de fall-through (nu există break uitat), și suportând pattern matching (potrivirea pe tipuri, condiții, valori și structură), ceea ce face logica condițională complexă mult mai curată decât lanțurile if-else imbricate.
Operatorii null-coalescing (??, ??=) oferă manipulare curată a null, iar foreach este modul idiomativ de a itera colecții.
Cunoașterea acestor construcții și preferarea formelor moderne, mai expresive (expresii switch cu pattern matching în locul instrucțiunilor switch verbose, null-coalescing pentru valori implicite) este cunoaștere de zi cu zi pentru scrierea unui C# curat și idiomativ.
Expresiile switch și pattern matching în special reflectă evoluția C# modern către cod mai funcțional și concis, făcând-le importante de înțeles atât pentru scrierea unui cod mai bun cât și pentru citirea codebase-urilor C# actuale care folosesc aceste caracteristici extensiv.