breakなしのcase §
規則性のない複雑な条件を分岐させるのに、switchステートメントは便利です。
しかし、C#ではcaseに対応するbreakまたはreturnステートメントなどが必須です。
つまり、次のcaseに処理を続けることはできません。以下はダメな例です。
case 0:
何かの処理
// ここにbreakがない!
case 1:
何かの処理
break;
具体的には、上は許可されているプログラミング言語と許可されていないプログラミング言語があります。C#は後者です。ですからこれはC#ではダメな例です。
しかし、breakがなくても許される状況があります。
処理が何もなければbreakなどの脱出ステートメントが何もなくても許されます。
これはC#でもオッケーです。
case 0:
// ここにbreakがない!
case 1:
何かの処理
break;
罠の数々 §
- サンプルソースのcase 6:は実はなくても動作が同じことに注意しよう。
参考リンク §
switch (C# リファレンス)
break (C# リファレンス)
switchステートメントを使用しないで同じことをする方法の説明がある。上記リンクから辿って捜してみよう。
リポジトリ §
https://github.com/autumn009/cshowto
switchWithoutBreak §
using System;
class Program
{
static void Main()
{
for (int i = 1; i < 7; i++)
{
Console.Write($"製品番号{i}は、");
switch (i)
{
case 1:
case 2:
Console.WriteLine("廃盤です。");
break;
case 3:
case 5:
Console.WriteLine("販売中です。");
break;
case 6:
default:
Console.WriteLine("お問い合わせ下さい。");
break;
}
}
}
}
実行結果
製品番号1は、廃盤です。
製品番号2は、廃盤です。
製品番号3は、販売中です。
製品番号4は、お問い合わせ下さい。
製品番号5は、販売中です。
製品番号6は、お問い合わせ下さい。