C# Switch语句教程 - Switch表达式、模式匹配与高级用法

全面掌握C# Switch语句:从基础语法到C# 8.0高级特性,详解switch表达式、模式匹配、与if-else性能对比及最佳实践,包含实际应用示例

什么是Switch语句?

Switch语句是C#中用于多分支条件判断的重要控制结构,它提供了一种比多个if-else语句更清晰、更高效的方式来处理基于不同值的决策逻辑。

使用 switch 语句用于根据多个不同条件执行不同动作。

为什么选择Switch而不是If-Else?

  • 代码可读性 - 当条件分支较多时,switch语句比嵌套的if-else更易读和维护
  • 性能优势 - 在某些情况下,switch语句比多个if-else判断性能更好
  • 结构清晰 - switch提供了更清晰的代码结构,便于调试和维护
  • 8.0+ 增强 - 现代C#版本为switch添加了模式匹配和表达式等强大功能

基础Switch语句语法

让我们从传统的switch语句开始,理解其基本结构和工作原理。

语法

switch(expression) 
{
  case x:
    // 代码块
    break;
  case y:
    // 代码块
    break;
  default:
    // 代码块
    break;
}

工作原理:

  • switch 表达式计算一次
  • 将表达式的值与每种情况 case 的值进行比较
  • 如果存在匹配项,则执行关联的代码块
  • break 和 default 关键字将在本章后面介绍

下面的示例使用工作日编号来计算工作日名称:

实例

int day = 4;
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;
}
// 输出 "Thursday" (day 4)

运行实例 »

执行流程分析:
  1. 计算switch表达式(day = 4)
  2. 将表达式的值与每个case的值进行比较
  3. 找到匹配项(case 4)
  4. 执行匹配的代码块
  5. 遇到break语句,跳出switch块

break 关键词

当 C# 到达 break 关键字时,它会跳出 switch 块。

这将停止在块内执行更多代码和案例测试。

当找到匹配项,工作完成后就结束。没有必要进行更多的测试。

break 中断可以节省大量执行时间,因为它忽略"switch"中所有其余代码的执行。


default 关键词

default 关键字是可选的,并指定在没有大小写匹配时默认要运行的一些代码:

实例

int day = 4;
switch (day) 
{
  case 6:
    Console.WriteLine("Today is Saturday.");
    break;
  case 7:
    Console.WriteLine("Today is Sunday.");
    break;
  default:
    Console.WriteLine("Looking forward to the Weekend.");
    break;
}
// 输出 "Looking forward to the Weekend."

运行实例 »


C# 实验

学习训练

练习题:

插入缺少的代码部分,并完成以下 switch语句。

int day = 2;
switch () 
{
   1:
    Console.WriteLine("Monday");
    break;
   2:
    Console.WriteLine("Tuesday");
    ;
}

开始练习