執行過程:
程序執行到switch處,首先將括號中變量或者表達式的值計算出來,然后拿着這個值依次跟每個case后面所帶的值進行匹配,一旦匹配成功,則執行該case所帶的代碼,執行完成后,遇到break。
跳出switch-case結構。如果,跟每個case所帶的值都不匹配。就看當前這個switch-case結構中是否存在default,如果有default,則執行default中的語句,如果沒有default,則該switch-case結構,什么都不做。
switch條件語句的表達式的類型可以是: bool,整形,char,string,枚舉,或相應可以為null的類型.
[例一]
編寫一個控制台程序,輸入一個學生的成績,輸出其等級。(優:>=90;良:>=80;中:>=70; 及格:>=60;不及格:<60)
1 static void Main(string[] args) 2 { 3 Console.WriteLine("please input:"); 4 int opition = int.Parse(Console.ReadLine()); 5 switch (opition/10) 6 { 7 case 10: 8 case 9: 9 Console.WriteLine("youxiu"); 10 break; 11 case 8: 12 Console.WriteLine("lianghao"); 13 break; 14 case 7: 15 Console.WriteLine("zhong"); 16 break; 17 case 6: 18 Console.WriteLine("jige"); 19 break; 20 case 5: 21 case 4: 22 case 3: 23 case 2: 24 case 1: 25 case 0: 26 Console.WriteLine("bujige");//看這個,如果最后會輸出相同的結果,方便起見,可以不在每一個case塊后打break,當然也可以打上(如果打break的話就要在每一個有break的塊內寫輸出) 27 break; 28 } 29 Console.ReadLine(); 30 31 }
[例二]
李四的年終工作評定,如果定為A級,則工資漲500元, 如果定為B級,則工資漲200元,如果定為C級,工資不變,如果定為D級工資降200元,如果定為E級工資降500元.
設李四的原工資為5000,請用戶輸入李四的評級,然后顯示李四來年的工資.
1 static void Main(string[] args) 2 { 3 bool b = true;//注意此處設計bool值的用意,考慮到了還有一種是輸錯了的情況 4 double salary = 5000; 5 Console.WriteLine("請輸入李四的年終評定(A, B, C, D, E):"); 6 string level = Console.ReadLine(); 7 8 switch (level)//可以填字符串形式 9 { 10 case "A"://字符串記得要加雙引號 11 salary += 500; 12 break; 13 case "B": 14 salary += 200; 15 break; 16 case "C": 17 //salary = 18 break; 19 case "D": 20 salary -= 200; 21 break; 22 case "E": 23 salary -= 500; 24 break; 25 default: 26 Console.WriteLine("error, please try again!"); 27 b = false; 28 break; 29 } 30 if(b) 31 { 32 Console.WriteLine($"李四明年的工資是{salary}元"); 33 } 34 Console.ReadKey();//運行完后等待按鍵關閉窗口 35 }
c#中switch語句兩個case標簽之間有代碼,卻沒有break跳出的話,系統會提示錯誤,控制不能從一個case標簽貫穿到另一個case標簽.--所以擔心出問題的同學就在每個case后打break吧.
很簡單,帶腦子按例子多打兩遍就會了