C# - switch 语句



switch 语句允许测试一个变量是否与一系列值相等。每个值称为一个 case,被切换的变量会针对每个 switch case 进行检查。

语法

C# 中 switch 语句的语法如下:

switch(expression) {
   case constant-expression1  :
      statement(s);
      break;
   case constant-expression2  :
   case constant-expression3  :
      statement(s);
      break;
  
   /* you can have any number of case statements */
   default : /* Optional */
   statement(s);
}

switch 语句适用以下规则:

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

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

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

  • 当被切换的变量等于某个 case 时,紧跟该 case 后面的语句将执行,直到遇到break语句。

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

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

  • switch 语句可以包含可选的default case,它必须出现在 switch 的末尾。当没有一个 case 为真时,可以使用 default case 来执行任务。

流程图

switch statement in C#

示例

using System;

namespace DecisionMaking {
   class Program {
      static void Main(string[] args) {
         /* local variable definition */
         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();
      }
   }
}

编译并执行以上代码后,将产生以下结果:

Well done
Your grade is B
csharp_decision_making.htm
广告