首页 > 编程笔记 > C#笔记 阅读:2

C# switch语句的用法(附带实例)

C# 程序开发中,一个常见的问题就是检测一个变量是否符合某个条件,如果不符合,再用另一个值来检测它,以此类推。

当然,这种问题可以使用 if 选择语句完成。例如,使用 if 语句检测变量是否符合某个条件,代码如下:
char grade = 'B';
if (grade == 'A')
{
    Console.WriteLine("真棒");
}
if (grade == 'B')
{
    Console.WriteLine("做得不错");
}
if (grade == 'C')
{
    Console.WriteLine("再接再厉");
}
在执行上面的代码时,每一条 if 语句都会进行判断,这样显得非常烦琐,为了简化这种编写代码的方式,C# 中提供了 switch 语句,将判断动作组织起来,以一个比较简单的方式实现“多选一”的逻辑。

C# switch语句的用法

switch 语句是多分支条件判断语句,它根据参数的值使程序从多个分支中选择一个用于执行的分支,其基本语法如下:
switch(判断参数)
{
    case 常量值1:
        语句块1
        break;
    case 常量值2:
        语句块2
        break;
    ...
    case 常量值n:
        语句块
        break;
    default:
        语句块n+1
        break;
}
switch 关键字后面的括号 () 中是要判断的参数,参数必须是 byte、byte、short、ushort、int、uint、long、ulong、char、string、bool 或者枚举类型中的一种。

大括号 {} 中的代码是由多个 case 子句组成的,每个 case 关键字后面都有相应的语句块,这些语句块都是 switch 语句可能执行的语句块。如果符合常量值,则 case 下的语句块就会被执行,语句块执行完毕后,执行 break 语句,使程序跳出 switch 语句;如果条件都不满足,则执行 default 中的语句块。

注意:
switch 语句的执行流程如下图所示:


图 1 switch语句的执行流程图

【实例】使用 switch 多分支语句实现查询高考录取分数线的功能,假设:
代码如下:
static void Main(string[] args)
{
    // 输出提示问题
    Console.WriteLine("请输入要查询的录取分数线(比如民办本科、艺术类本科、体育类本科、二本、一本)");
    string strNum = Console.ReadLine(); // 获取用户输入的数据
    switch (strNum)
    {
        case "民办本科": // 查询民办本科分数线
            Console.WriteLine("民办本科录取分数线:350");
            break;
        case "艺术类本科": // 查询艺术类本科分数线
            Console.WriteLine("艺术类本科录取分数线:290");
            break;
        case "体育类本科": // 查询体育类本科分数线
            Console.WriteLine("体育类本科录取分数线:280");
            break;
        case "二本": // 查询二本分数线
            Console.WriteLine("二本录取分数线:445");
            break;
        case "一本": // 查询一本分数线
            Console.WriteLine("一本录取分数线:555");
            break;
        default: // 如果不是以上输入,则提示输入有误
            Console.WriteLine("您输入的查询信息有误!");
            break;
    }
    Console.ReadLine();
}
程序运行效果如下:
请输入要查询的录取分数线(比如民办本科、艺术类本科、体育类本科、二本、一本)
二本
二本录取分数线:445

C# switch语句的注意事项

1) 使用 switch 语句时,常量表达式的值不可以是浮点类型。例如,下面的代码就是不合法的:
double dNum = Convert.ToDouble(Console.ReadLine());
switch (dNum)
{
    case 1.0:
        Console.WriteLine("分支一");
        break;
    case 2.0:
        Console.WriteLine("分支二");
        break;
}
运行上面的代码时,将会出现如下图所示的错误提示:


图 2 判断参数为浮点类型时出现的错误提示

2) 使用 switch 语句时,每一个 case 语句或者 default 后面必须有一个 break 关键字,否则将会出现如下图所示的错误提示。


图 3 缺少break关键字时的错误提示

C# switch和if语句的区别

C# 中的 if…else if…else 语句也可以用来实现多分支选择的情况,但它主要是对布尔表达式、关系表达式或者逻辑表达式进行判断,而 switch 多分支语句主要对常量值进行判断。

程序开发中,如果遇到多分支选择的情况,并且判断的条件不是关系表达式、逻辑表达式或者浮点类型,就可以使用 switch 语句代替 if…else if…else 语句,这样执行效率会更高。

相关文章