C# предоставляет стандартные управляющие конструкции — условные операторы (, ), циклы (, , ) и ветвление (, , ) — плюс современные улучшения, такие как switch-выражения и сопоставление с образцом, которые делают код более лаконичным.
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",
};
Современное switch-выражение лаконично (возвращает значение, без break), и поддерживает мощное сопоставление с образцом (сопоставление типов, условий и многого другого) — значительное улучшение по сравнению с многословным традиционным 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 (итерирование любого IEnumerable) является идиоматическим способом цикла для коллекций.
foreach (var item in items)
{
if (item.Skip) continue; // next iteration
if (item.Stop) break; // exit loop
}
return result; // exit method
Управление потоком — это базовый механизм для выражения логики в каждой программе, поэтому понимание управляющих конструкций C# — это фундаментальное повседневное знание.
Хотя основы стандартны, современные улучшения C# стоит знать и использовать: switch-выражение (C# 8+) — значительное улучшение по сравнению с традиционным switch — лаконично, возвращает значение, без ошибок перехода (без забытых break), и поддерживает сопоставление с образцом (сопоставление типов, условий, значений и структуры), что делает сложную условную логику намного чище, чем цепочки вложенных if-else.
Операторы объединения null (??, ??=) обеспечивают чистую обработку null, а foreach — идиоматический способ итерирования коллекций.
Знание этих конструкций и предпочтение современных, более выразительных форм (switch-выражения с сопоставлением образцов вместо многословных switch-операторов, объединение null для значений по умолчанию) — это повседневное знание для написания чистого, идиоматического C#.
Switch-выражение и сопоставление с образцом в частности отражают эволюцию современного C# в сторону более функционального, лаконичного кода, что делает их важными как для написания лучшего кода, так и для чтения текущих кодовых баз C#, в которых эти функции широко используются.