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所有的情况,谢谢大家指正。