C# は、標準的な制御フロー構文——条件分岐(if、switch)、ループ(、、)、分岐制御(、、)——に加えて、switch 式やパターンマッチングなどの最新機能を提供し、コードをより簡潔にします。
forforeachwhilebreakcontinuereturnif (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# コードベースを読むためにも理解することが重要です。