C# - 嵌套 switch 语句

在 C# 中,嵌套 switch 语句是指在一个 switch 语句内部使用另一个 switch 语句。这在处理多级决策时非常有用。

可以将 switch 语句作为外部 switch 语句序列的一部分。即使内外 switch 的 case 常量包含相同的值,也不会发生冲突。

语法

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

switch(ch1) {
   case 'A':
   Console.WriteLine("This A is part of outer switch" );
   
   switch(ch2) {
      case 'A':
         Console.WriteLine("This A is part of inner switch" );
         break;
      case 'B': /* inner B case code */
   }
   break;
   case 'B': /* outer B case code */
}

嵌套 switch 语句的使用规则

嵌套 switch 语句是指一个 switch 语句嵌套在另一个 switch 语句中。使用时请遵循以下一些简单规则:

  • 每个 switch 中的表达式必须是整数类型(例如,intchar)或枚举类型
  • 每个 switch 可以包含多个 case 标签,并且 case 值必须与 switch 表达式的数据类型匹配。
  • case 值必须是常量或字面量(例如,数字或字符)。 不允许使用变量作为 case 的值。
  • 当 case 匹配时,该 case 中的代码将一直运行,直到遇到 break 语句
  • 每个 case 都必须以 break 语句 结束,以停止执行。缺少 break 将导致 编译时错误
  • switch 语句可以嵌套,这意味着一个 switch 语句可以放在 case 块中的另一个 switch 语句内。
  • 外部 switch 语句和内部 switch 语句都可以包含一个 default case,当没有其他 case 匹配时运行该 case。

示例:嵌套 switch 语句的使用

在此示例中,我们将演示嵌套 switch 语句在 C# 中的工作原理 -

using System;
namespace DecisionMaking {
   class Program {
      static void Main(string[] args) {
         int a = 100;
         int b = 200;
         
         switch (a) {
            case 100: 
            Console.WriteLine("This is part of outer switch ");
            
            switch (b) {
               case 200:
               Console.WriteLine("This is part of inner switch ");
               break;
            }
            break;
         }
         Console.WriteLine("Exact value of a is : {0}", a);
         Console.WriteLine("Exact value of b is : {0}", b);
         Console.ReadLine();
      }
   }
} 

Output

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

This is part of outer switch
This is part of inner switch
Exact value of a is : 100
Exact value of b is : 200

示例:用于选择部门和角色的嵌套 Switch 语句

在此示例中,我们使用嵌套 Switch 语句来显示给定部门和角色时的角色和职责 -

using System;
public class Example {
   public static void Main() {
      // Define department
      string department = "IT";

      // Define Role
      string role = "Manager";

      switch (department) {
      case "IT":
         switch (role) {
         case "Developer":
            Console.WriteLine("IT - Developer: Responsible for coding.");
            break;
         case "Tester":
            Console.WriteLine("IT - Tester: Ensures software quality.");
            break;
         case "Manager":
            Console.WriteLine("IT - Manager: Oversees IT projects.");
            break;
         default:
            Console.WriteLine("Invalid IT Role!");
            break;
         }
         break;

      case "HR":
         switch (role) {
         case "Recruiter":
            Console.WriteLine("HR - Recruiter: Manages hiring.");
            break;
         case "Trainer":
            Console.WriteLine("HR - Trainer: Conducts training sessions.");
            break;
         case "Coordinator":
            Console.WriteLine("HR - Coordinator: Handles HR operations.");
            break;
         default:
            Console.WriteLine("Invalid HR Role!");
            break;
         }
         break;

      case "Finance":
         switch (role) {
         case "Accountant":
            Console.WriteLine("Finance - Accountant: Manages financial records.");
            break;
         case "Auditor":
            Console.WriteLine("Finance - Auditor: Conducts financial audits.");
            break;
         case "Analyst":
            Console.WriteLine("Finance - Analyst: Analyzes financial data.");
            break;
         default:
            Console.WriteLine("Invalid Finance Role!");
            break;
         }
         break;

      default:
         Console.WriteLine("Invalid Department!");
         break;
      }
   }
}

Output

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

IT - Manager: Oversees IT projects.