C# teikia standartines kontrolės srauto konstrukcijas — sąlyginius sakinius (, ), ciklus (, , ) ir šakojimą (, , ) — taip pat šiuolaikinį patobulinimą, tokį kaip switch išraiškos ir šablono atitikimas, kurie kodą daro glaustesnį.
ifswitchforforeachwhilebreakcontinuereturnif (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",
};
Šiuolaikinė switch išraiška yra glausta (grąžina reikšmę, nereikalingas break), ir palaiko galingą šablono atitikimą (atitikimas tipams, sąlygoms ir kt.) — didelis patobulinimas, palyginti su išsamiu tradiciniam 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 (pasikartojimas per bet kurią IEnumerable) yra idiomatinis ciklas, skirtas kolekcijoms.
foreach (var item in items)
{
if (item.Skip) continue; // next iteration
if (item.Stop) break; // exit loop
}
return result; // exit method
Kontrolės srautas yra pagrindinis mechanizmas logikai išreikšti kiekvienoje programoje, todėl C# konstrukcijų supratimas yra pagrindinės kasdieninės žinios.
Nors pagrindai yra standartiniai, šiuolaikinį C# patobulinimai verta žinoti ir naudoti: switch išraiška (C# 8+) yra reikšmingas patobulinimas, palyginti su tradiciniam switch — glauta, grąžina reikšmę, be pataisos per atsigrąžimo klaidų (nėra pamiršto break), ir palaikanti galingą šablono atitikimą (atitikimas tipams, sąlygoms, reikšmėms ir struktūrai), kuri sudėtingą sąlyginę logiką daro daug glaustesnę nei įdėti if-else grandinės.
Nulinio sujungimo operatoriai (??, ??=) teikia glaustą nulinio tvarkymą, o foreach yra idiomatinis būdas kartoti kolekcijas.
Šių konstrukcijų žinojimas ir šiuolaikinių, išraiškesnių formų teikimas (switch išraiškos su šablono atitikimu, o ne išsamus switch sakinius, nulinis sujungimas numatytoms reikšmėms) yra kasdieninės žinios skaidrioms, idiomatinėms C# rašyti.
Switch išraiška ir šablono atitikimas ypač atspindi šiuolaikinę C# evoliuciją link funkcinės, glaustesnės kodo, todėl svarbu ją suprasti ir geresniam kodui parašyti, ir esamai C# kodų bazei skaityti, kuri plačiai naudoja šias funkcijas.
IT pokalbių klausimų biblioteka su išsamiais atsakymais — nuo Junior iki Senior.
Paaukoti