if语句每次判断只能实现两条分支,如果要实现多种选择的功能,那么可以采用switch语句。
switch语句根据一个控制表达式的值选择一个内嵌语句分支来执行。它的一般格式为:
switch(controllong-expression) { case constant-expression embedded-statements default: embedded-statements }
switch语句的控制类型,即其中控制表达式(controllong-expression)的数据类型可以是sbyte,byte,short,ushort,uint,long,ulong,char,string或枚举类型(enum-type)。每个case标签中的常量表达式(constant-expression)必须属于或能隐式转换成控制类型。如果有两个或两个以上的case标签中的常量表达式相同,编译时将会报错。switch语句中最多只能有一个default标签。
我们举一个例子来说明switch语句是如何实现程序的多路分支的。
假设考查课的成绩按优秀、良好、中等、及格和不及格分为五等,分别用4、3、2、1、0来表示,但实际的考卷为百分制,分别对应的分数为90-100,80-90,60-80,60分以下。下面的程序将考卷成绩x转换为考查课成绩y。我们先看流程图。
代码如下:
int x=int(x/10); switch(x) { case 10:y=4;break; case 9:y=4;break; case 8:y=3;break; case 7:y=2;break; case 6:y=1;break; default:y=0; }
下面的例子判断传递给应用程序的参数的有无、位数。
程序清单8-2:
using System; class Test { public static void Main(string[] args{ switch(args.Length){ case 0: Console.WriteLine("No arguments were provided"); break; case 1: Console.WriteLine("One arguments was provided"); break; default: Console.WriteLine("{0}arguments were provided"); break; } }