switch()
switch(var) { case var1: code; break; case var2: code; break; ... default: code; break; }
執行完一個case,不能跳轉到另一個case;
每個case代碼都要有break;
string i="a"; switch(i) { case "a": Console.WriteLine("a"); break; case "b": Console.WriteLine("b"); break; default: Console.WriteLine("c"); break; } Console.ReadKey();
可以使用return;結束整個函數;可以不用break;
string i="a"; switch(i) { case "a": Console.WriteLine("a"); //break; return; case "b": Console.WriteLine("b"); break; default: Console.WriteLine("c"); break; } Console.WriteLine("xxx"); Console.ReadKey();
也可以使用goto來跳轉執行,實際上每個case都是一個label;
string i="a"; switch(i) { case "a": Console.WriteLine("a"); //break; //return; goto case "b"; case "b": Console.WriteLine("b"); break; default: Console.WriteLine("c"); break; } Console.WriteLine("xxx"); Console.ReadKey();
多個case對應一種執行代碼:
string i="c"; switch(i) { case "a": case "c": case "d": Console.WriteLine("acd"); break; //return; //goto case "b"; case "b": Console.WriteLine("b"); break; default: Console.WriteLine("c"); break; } Console.WriteLine("xxx"); Console.ReadKey();
default的位置不一定寫在最后,可以任意
string i="b"; switch(i) { case "a": case "c": case "d": Console.WriteLine("acd"); break; //return; //goto case "b"; default: Console.WriteLine("c"); break; case "b": Console.WriteLine("b"); break; } Console.WriteLine("xxx"); Console.ReadKey();
如果case a 執行一句,case b 執行一句,case a 不僅執行case a 而且還執行case b,需要用goto
string i="a"; switch(i) { case "a": Console.WriteLine("a"); goto case "b"; case "b": Console.WriteLine("b"); break; default: Console.WriteLine("c"); break; } Console.WriteLine("xxx"); Console.ReadKey();
以上是switch所有的情況,謝謝大家指正。