C# cung cấp các cấu trúc điều khiển luồng tiêu chuẩn — điều kiện (if, ), vòng lặp (, , ), và rẽ nhánh (, , ) — cùng các cải tiến hiện đại như switch expression và pattern matching giúp code gọn hơn.
switchforforeachwhilebreakcontinuereturnif (score >= 90)
grade = "A";
else if (score >= 80)
grade = "B";
else
grade = "F";
// ternary và null-coalescing
string status = age >= 18 ? "adult" : "minor";
string name = input ?? "default"; // ?? — dùng giá trị mặc định nếu input null
name ??= "fallback"; // ??= gán nếu null
// switch truyền thống
switch (day)
{
case "Sat":
case "Sun":
type = "weekend";
break; // cần break (không có fall-through)
default:
type = "weekday";
break;
}
// switch EXPRESSION (C# 8) — gọn, trả về một giá trị, có pattern matching
string type = day switch
{
"Sat" or "Sun" => "weekend",
_ => "weekday", // _ = mặc định
};
// pattern matching trong switch
string describe = obj switch
{
int n when n > 0 => "positive int",
string s => $"string of length {s.Length}",
null => "null",
_ => "other",
};
Switch expression hiện đại thì gọn (trả về một giá trị, không cần break), và hỗ trợ pattern matching mạnh mẽ (khớp kiểu, điều kiện, và nhiều hơn) — một cải tiến lớn so với switch truyền thống dài dòng.
for (int i = 0; i < 10; i++) { }
foreach (var item in collection) { } // duyệt bất kỳ IEnumerable nào
while (condition) { }
do { } while (condition); // chạy ít nhất một lần
foreach (duyệt bất kỳ IEnumerable nào) là vòng lặp đúng thành ngữ cho collection.
foreach (var item in items)
{
if (item.Skip) continue; // sang vòng lặp tiếp theo
if (item.Stop) break; // thoát vòng lặp
}
return result; // thoát method
Điều khiển luồng là cơ chế cơ bản để biểu đạt logic trong mọi chương trình, nên hiểu các cấu trúc của C# là kiến thức nền tảng hằng ngày.
Tuy phần cơ bản là tiêu chuẩn, các cải tiến của C# hiện đại đáng biết và đáng dùng: switch expression (C# 8+) là một cải tiến đáng kể so với switch truyền thống — gọn, trả về giá trị, không có lỗi fall-through (không quên break), và hỗ trợ pattern matching (khớp theo kiểu, điều kiện, giá trị và cấu trúc), giúp logic điều kiện phức tạp gọn hơn nhiều so với chuỗi if-else lồng nhau.
Các toán tử null-coalescing (??, ??=) cung cấp xử lý null gọn gàng, và foreach là cách đúng thành ngữ để duyệt collection.
Biết các cấu trúc này và ưu tiên các dạng hiện đại, biểu cảm hơn (switch expression với pattern matching thay cho câu lệnh switch dài dòng, null-coalescing cho giá trị mặc định) là kiến thức hằng ngày để viết C# sạch, đúng thành ngữ.
Đặc biệt switch expression và pattern matching phản ánh sự tiến hóa của C# hiện đại hướng tới code functional, gọn hơn, khiến chúng quan trọng để hiểu cả khi viết code tốt hơn lẫn khi đọc các codebase C# hiện tại dùng các tính năng này rộng rãi.