执行过程:
程序执行到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吧.
很简单,带脑子按例子多打两遍就会了