跳到主要内容

C# Switch 语句

介绍

在 C# 编程中,switch 语句是一种用于根据变量的值执行不同代码块的控制流语句。它通常用于替代多个 if-else 语句,使代码更加简洁和易读。switch 语句特别适合处理多个固定值的条件判断。

基本语法

switch 语句的基本语法如下:

csharp
switch (expression)
{
case value1:
// 当 expression 等于 value1 时执行的代码
break;
case value2:
// 当 expression 等于 value2 时执行的代码
break;
// 可以有任意数量的 case 语句
default:
// 当 expression 不匹配任何 case 时执行的代码
break;
}
  • expression 是一个表达式,通常是一个变量或常量。
  • case 关键字后面跟着一个值,如果 expression 的值与 case 的值匹配,则执行该 case 下的代码块。
  • break 语句用于退出 switch 语句。如果没有 break,程序会继续执行下一个 case 的代码块(称为“贯穿”)。
  • default 是可选的,用于处理 expression 不匹配任何 case 的情况。

代码示例

以下是一个简单的 switch 语句示例,根据用户输入的数字输出对应的星期几:

csharp
int day = 3;
string dayName;

switch (day)
{
case 1:
dayName = "星期一";
break;
case 2:
dayName = "星期二";
break;
case 3:
dayName = "星期三";
break;
case 4:
dayName = "星期四";
break;
case 5:
dayName = "星期五";
break;
case 6:
dayName = "星期六";
break;
case 7:
dayName = "星期日";
break;
default:
dayName = "无效的日期";
break;
}

Console.WriteLine(dayName);

输出:

星期三

贯穿(Fall-through)

在某些情况下,你可能希望多个 case 共享相同的代码块。这时可以使用贯穿(fall-through)的方式,即省略 break 语句。但需要注意的是,C# 不允许隐式的贯穿,必须显式地使用 goto casegoto default

csharp
int number = 2;
string result;

switch (number)
{
case 1:
case 2:
case 3:
result = "数字在 1 到 3 之间";
break;
case 4:
case 5:
result = "数字在 4 到 5 之间";
break;
default:
result = "数字不在 1 到 5 之间";
break;
}

Console.WriteLine(result);

输出:

数字在 1 到 3 之间

实际应用场景

switch 语句在实际开发中有很多应用场景,例如:

  1. 菜单选择:在命令行应用程序中,根据用户选择的菜单项执行不同的操作。
  2. 状态机:在游戏开发中,根据角色的状态(如“站立”、“行走”、“攻击”)执行不同的逻辑。
  3. 错误处理:根据不同的错误代码执行不同的错误处理逻辑。

以下是一个简单的菜单选择示例:

csharp
Console.WriteLine("请选择一个选项:");
Console.WriteLine("1. 开始游戏");
Console.WriteLine("2. 加载游戏");
Console.WriteLine("3. 退出");

int choice = int.Parse(Console.ReadLine());

switch (choice)
{
case 1:
Console.WriteLine("游戏开始!");
break;
case 2:
Console.WriteLine("加载游戏中...");
break;
case 3:
Console.WriteLine("退出游戏。");
break;
default:
Console.WriteLine("无效的选择。");
break;
}

总结

switch 语句是 C# 中一种强大的控制流工具,特别适合处理多个固定值的条件判断。通过 switch 语句,你可以使代码更加简洁、易读,并且减少重复的 if-else 语句。

提示

在使用 switch 语句时,记得在每个 case 块末尾添加 break 语句,以避免意外的贯穿行为。如果你确实需要贯穿,可以使用 goto casegoto default

附加资源与练习

  1. 练习:编写一个 switch 语句,根据用户输入的温度范围输出不同的天气描述(如“寒冷”、“凉爽”、“温暖”、“炎热”)。
  2. 进一步学习:了解 C# 7.0 引入的模式匹配功能,它扩展了 switch 语句的功能,使其可以处理更复杂的条件。

通过不断练习和探索,你将能够熟练运用 switch 语句来处理各种复杂的条件判断场景。