C# switchステートメント


スポンサーリンク

switchステートメントは変数の値に基づいて実行フローを分岐することができる。
if elseでも同じことができるが、switch文を使うとよりスマートな記述でコードを書くことができる。

特定のcaseステートメントが実行された後は、自動的に次のステートメントが実行されるわけでもないし、switchステートメントの外に移動するわけでもない。そこがJavaと違うところだ。
なので、明示的に実行フローを指定する必要がある。

break→switchステートメントの最後に移動する
goto case hoge→規定のcaseステートメント(hoge)に移動する
goto default→defaultに移動する

たとえば、以下を実行してみると・・・

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "hoge";
            switch (str)
            {
                case null:
                    Console.WriteLine("null!?");
                    goto default;
                case "hoge":
                    Console.WriteLine("hogeeeee!");
                    goto default;
                    //goto case null;
                default:
                    Console.WriteLine("default!!!!");
                    break;

            }
        }
    }
}

以下のように表示される。

hogeeeee!
default!!!!
続行するには何かキーを押してください . . .

switch文を以下のように書き直すと,

switch (str)
{
    case null:
        Console.WriteLine("null!?");
        goto default;
    case "hoge":
        Console.WriteLine("hogeeeee!");
        //goto default;
        goto case null;
    default:
        Console.WriteLine("default!!!!");
        break;

}

以下のように表示される。

hogeeeee!
null!?
default!!!!
続行するには何かキーを押してください . . .