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!!!! 続行するには何かキーを押してください . . .