C# - Switch 语句

C# switch case 语句是一种控制流结构,它允许我们根据变量的值执行不同的代码块,方法是将变量的值与多个可能的 case 值进行比较。

我们可以说,它允许将变量与一系列值进行比较,以判断其是否相等。每个值称为一个 case,并且会针对每个 switch case 检查被切换的变量。

语法

以下是 C# switch 语句的语法 -

switch(expression) {
   case constant-expression1  :
      statement(s);
      break;
   case constant-expression2  :
   case constant-expression3  :
      statement(s);
      break;
  
   /* 你可以有任意数量的 case 语句 */
   default : /* 可选 */
   statement(s);
}

switch 语句使用规则

以下规则适用于 switch 语句 -

  • switch 语句中使用的 表达式 必须是整型或枚举型,或者是一个类类型,且该类具有一个到整型或枚举型的转换函数。

  • 一个 switch 语句中可以包含任意数量的 case 语句。每个 case 后面都跟着要比较的值和一个冒号。

  • case 的 常量表达式 必须与 switch 中的变量具有相同的数据类型,并且必须是常量或字面量。

  • 当 switch 中的变量等于某个 case 时,该 case 后面的语句将一直执行,直到遇到 break 语句。

  • 当遇到 break 语句时,switch 终止,控制流跳转到 switch 语句后的下一行。

  • 并非每个 case 都需要包含 break。如果没有出现 break,则会引发编译时错误。

  • switch 语句可以包含可选的 default case,该 case 必须出现在 switch 的末尾。默认情况可用于在所有情况都不成立时执行任务。

流程图

C# 中的 switch 语句

示例:理解 switch 语句

在此 C# 程序中,我们构建了一段代码来演示 switch 语句的用法 -

using System;
namespace DecisionMaking {
   class Program {
      static void Main(string[] args) {
         /* 局部变量定义 */
         char grade = 'B';
         
         switch (grade) {
            case 'A':
               Console.WriteLine("Excellent!");
               break;
            case 'B':
            case 'C':
               Console.WriteLine("Well done");
               break;
            case 'D':
               Console.WriteLine("You passed");
               break;
            case 'F':
               Console.WriteLine("Better try again");
               break;
               default:
            Console.WriteLine("Invalid grade");
               break;
         }
         Console.WriteLine("Your grade is  {0}", grade);
         Console.ReadLine();
      }
   }
}

Output

当编译并执行上述代码时,它会产生以下结果 -

Well done
Your grade is B

示例:显示星期几

在此示例中,我们使用 switch case 语句,如果给定了整数值,则显示星期几 -

using System;
public class Example {
   public static void Main() {
      int day = 5; 
      switch (day)
      {
         case 1:
            Console.WriteLine("Sunday");
            break;
         case 2:
            Console.WriteLine("Monday");
            break;
         case 3:
            Console.WriteLine("Tuesday");
            break;
         case 4:
            Console.WriteLine("Wednesday");
            break;
         case 5:
             Console.WriteLine("Thursday");
             break;
         case 6:
            Console.WriteLine("Friday");
            break;
         case 7:
            Console.WriteLine("Saturday");
            break;
         default:
            Console.WriteLine("Invalid input! Please enter a number between 1 and 7.");
            break;
      }
   }
}

输出

以下是输出 -

Thursday