switch的基本形式:
switch(值)
{
case 常量:
//代码
break;
case 常量:
//代码
break;
default:
break;
}
当有多种不同常量的等值判断时,相较于多层if-else,switch代码简便的多
做一个计算器
Console.WriteLine("请输入第一个数");
double a = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第二个数");
double b = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入操作符");
switch (Console.ReadLine())
{
case "+":
Console.WriteLine(a + b); break;
case "-":
Console.WriteLine(a - b); break;
case "*":
Console.WriteLine(a * b); break;
case "/":
Console.WriteLine(a / b); break;
case "%":
Console.WriteLine(a % b); break;
default:
Console.WriteLine("您的输入有误");
break;
}
点菜单
Console.WriteLine("本店有红烧鲤鱼,红烧鲤鱼,红烧鲤鱼和红烧鲤鱼。按1选择吃,按2选择不吃");
switch (Console.ReadLine())
{
case "1":
Console.WriteLine("您的账单请查收\n您一共消费8848元");
break;
case "2":
Console.WriteLine("慢走不送");
break;
default:
Console.WriteLine("输入有误");
break;
}
选择奖励
Console.WriteLine("选择您的奖励:\n1.随机一件装备中的物品等级+1\n2.恢复70%最大生命值\n3.获得2-4本附魔书\n4.恢复装备所有耐久度并获得500金币");
switch (Console.ReadLine())
{
case "1":
case "2":
case "3":
case "4":
Console.WriteLine("功能未实装");
break;
}
编译器会先将case值类型转化为判断值的类型
case值不能相同,因此不能存在变量
当判断值与case标签值均不同时执行default标签(如果有default标签)
case标签的顺序没有要求也没有影响
如case后面没有执行语句,会顺延至下一条case的执行语句
执行语句后不能继续贯穿case,不能通过顺序执行脱离switch
阻止贯穿和脱离的一般方法是break
用于判断的值可以为常量,但这样做没有意义。会出现大量的不可达代码
double a = 4;
switch (a)
{
case 4:
case 2+2.0:
case 3f:
default:
break;
}
代码报错,理由为case值重复