C# の if 文と switch 文の基礎
目次
概要
C# の if
文と switch
文は、プログラムにおける条件分岐を実現するための基礎的な構文です。ここでは、その構文と使い方、およびパターンマッチングについても解説します。
1. if
文
if
文は、条件に基づいて処理を分岐するために使用されます。複数の条件を柔軟に評価できる為、普段の条件分岐に適しています。
構文
if (条件)
{
// 条件が true の場合に実行されるコード
}
else if (別の条件)
{
// 最初の条件が false で、別の条件が true の場合に実行されるコード
}
else
{
// すべての条件が false の場合に実行されるコード
}
例
int score = 85;
if (score >= 90)
{
Console.WriteLine("評価: A");
}
else if (score >= 75)
{
Console.WriteLine("評価: B");
}
else if (score >= 50)
{
Console.WriteLine("評価: C");
}
else
{
Console.WriteLine("評価: D");
}
2. switch
文
switch
文は、特定の値に基づいて処理を分岐させるために使用されます。if
文に比べて、値の分岐が多い場合にコードを簡潔にすることができます。
構文
switch (式)
{
case 値1:
// 式が値1と一致する場合に実行されるコード
break;
case 値2:
// 式が値2と一致する場合に実行されるコード
break;
default:
// どのケースにも一致しない場合に実行されるコード
break;
}
例
int day = 3;
switch (day)
{
case 1:
Console.WriteLine("月曜日");
break;
case 2:
Console.WriteLine("火曜日");
break;
case 3:
Console.WriteLine("水曜日");
break;
case 4:
Console.WriteLine("木曜日");
break;
case 5:
Console.WriteLine("金曜日");
break;
default:
Console.WriteLine("週末または無効な日");
break;
}
3. パターンマッチング
C# 7以降では、パターンマッチングにより、型チェックや複雑な条件を簡潔に記述できます。
switch
文でのパターンマッチング
object obj = 42;
switch (obj)
{
case int i when i > 50:
Console.WriteLine($"大きい数値: {i}");
break;
case int i:
Console.WriteLine($"数値: {i}");
break;
case string s:
Console.WriteLine($"文字列: {s}");
break;
case null:
Console.WriteLine("null値");
break;
default:
Console.WriteLine("未対応の型");
break;
}
if
文でのパターンマッチング
object obj = "Hello, World!";
if (obj is string s)
{
Console.WriteLine($"文字列の長さ: {s.Length}");
}
else if (obj is int i && i > 0)
{
Console.WriteLine($"正の数値: {i}");
}
else
{
Console.WriteLine("その他の型または条件に一致せず");
}
switch
式の導入 (C# 8以降)
int score = 85;
string grade = score switch
{
>= 90 => "A",
>= 75 => "B",
>= 50 => "C",
_ => "D"
};
Console.WriteLine($"評価: {grade}");
4. パターンの種類
型パターン
if (obj is string s)
{
Console.WriteLine($"文字列: {s}");
}
値パターン
int x = 10;
if (x is 10)
{
Console.WriteLine("値は10です");
}
条件付きパターン (when
)
if (x is > 0 and < 100)
{
Console.WriteLine("0より大きく100未満");
}
タプルパターン
(int x, int y) point = (1, 2);
string result = point switch
{
(0, 0) => "原点",
(0, _) => "X軸上",
(_, 0) => "Y軸上",
_ => "その他の点"
};
Console.WriteLine(result);
リストパターン (C# 11以降)
int[] numbers = { 1, 2, 3 };
string result = numbers switch
{
[1, 2, 3] => "1, 2, 3の配列",
[1, ..] => "1で始まる配列",
_ => "その他の配列"
};
Console.WriteLine(result);
まとめ
if
文: 柔軟な条件や範囲チェックに適している。switch
文: 固定値や特定パターンの分岐が簡潔に書ける。- パターンマッチング: 型や条件を組み合わせた分岐を簡潔に記述可能。
switch
式: 分岐結果を変数に許可に記述可能。
C# の条件分岐機能を最適な場合に使い分けることで、コードの可読性や効率を高めましょう。
ディスカッション
コメント一覧
まだ、コメントがありません