在C#中,case
关键字用于 switch
语句 中,它可以帮助程序根据不同的条件执行不同的代码分支。熟悉的同学可以直接跳过前面直接看 划到 switch
表达式(C# 8.0+)。
1. case
在 switch
语句中的作用
switch
语句用于处理多个条件分支,而 case
是其中的一个关键字,它定义了每个分支的具体条件。程序会根据 switch
表达式的值选择合适的 case
分支执行。如果找到了匹配的 case
,则执行该 case
后面的代码。
2. case
的基本用法
switch
语句中的每个 case
表示一个可能的值,当表达式的值与 case
中的值匹配时,会执行该 case
后的代码。
示例:基本的 switch-case
语句
int day = 3;
switch (day)
{
case 1:
Console.WriteLine("Monday");
break;
case 2:
Console.WriteLine("Tuesday");
break;
case 3:
Console.WriteLine("Wednesday");
break;
case 4:
Console.WriteLine("Thursday");
break;
case 5:
Console.WriteLine("Friday");
break;
case 6:
Console.WriteLine("Saturday");
break;
case 7:
Console.WriteLine("Sunday");
break;
default:
Console.WriteLine("Invalid day");
break;
}
解释:
switch (day)
:switch
语句检查变量day
的值。case 1:
:如果day
的值是 1,那么执行case 1
后的代码并打印 "Monday"。break;
:跳出switch
语句,防止继续执行后续的case
。default:
:如果所有case
都不匹配,执行default
中的代码。
在上面的示例中,如果 day
等于 3
,程序将打印 "Wednesday" 并跳出 switch
语句。
3. case
中的 break
- 在每个
case
分支后,通常会使用break
语句来终止当前switch
块的执行。如果没有break
,程序会继续执行下一个case
分支的代码(这种行为称为“fall-through”)。 - 注意: C# 不允许
switch-case
中的自动fall-through(除非显式地不加break
,并使用goto
语句),这与某些其他语言不同。
4. default
关键字
default
是一个可选的case
,它用于处理所有不符合前面任何case
的情况。相当于else
在if-else
语句中的作用。
5. case
的更多使用场景
多个值对应同一个 case
:
在 C# 7.0 及更高版本中,switch
支持多个值指向同一个 case
:
char grade = 'B';
switch (grade)
{
case 'A':
case 'B':
case 'C':
Console.WriteLine("Pass");
break;
case 'D':
case 'F':
Console.WriteLine("Fail");
break;
default:
Console.WriteLine("Invalid grade");
break;
}
在这个例子中,grade
是 'A'、'B' 或 'C' 时,都会输出 "Pass"。
switch
表达式(C# 8.0+):
C# 8.0 引入了 switch
表达式,使 switch
语句更加简洁和灵活。
int month = 3;
string season = month switch
{
12 or 1 or 2 => "Winter",
3 or 4 or 5 => "Spring",
6 or 7 or 8 => "Summer",
9 or 10 or 11 => "Autumn",
_ => "Unknown"
};
Console.WriteLine(season); // 输出:Spring
这里,switch
表达式直接返回一个值,而不是像传统 switch-case
那样通过 break
退出。
6. 总结
case
关键字用于switch
语句中,定义条件分支。- 每个
case
分支后通常跟随break
语句,防止程序继续执行后面的分支。 default
用于处理所有未匹配到的情况。- C# 提供了
switch
表达式,使代码更简洁。