更新:2007 年 11 月
switch 语句是一个控制语句,它通过将控制传递给其体内的一个 case 语句来处理多个选择和枚举。例如:
示例
C# | 复制代码 |
---|---|
int caseSwitch = 1; switch (caseSwitch) { case 1: Console.WriteLine("Case 1"); break; case 2: Console.WriteLine("Case 2"); break; default: Console.WriteLine("Default case"); break; } |
控制传递给与开关的值匹配的 case 语句。switch 语句可以包括任意数目的 case 实例,但是任何两个 case 语句都不能具有相同的值。语句体从选定的语句开始执行,直到 break 将控制传递到 case 体以外。在每一个 case 块(包括上一个块,不论它是 case 语句还是 default 语句)的后面,都必须有一个跳转语句(如 break)。但有一个例外,(与 C++ switch 语句不同)C# 不支持从一个 case 标签显式贯穿到另一个 case 标签。这个例外是当 case 语句中没有代码时。
如果没有任何 case 表达式与开关值匹配,则控制传递给跟在可选 default 标签后的语句。如果没有 default 标签,则控制传递到 switch 以外。
C# | 复制代码 |
---|---|
class SwitchTest { static void Main() { Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large"); Console.Write("Please enter your selection: "); string s = Console.ReadLine(); int n = int.Parse(s); int cost = 0; switch(n) { case 1: cost += 25; break; case 2: cost += 25; goto case 1; case 3: cost += 50; goto case 1; default: Console.WriteLine("Invalid selection. Please select 1, 2, or 3."); break; } if (cost != 0) { Console.WriteLine("Please insert {0} cents.", cost); } Console.WriteLine("Thank you for your business."); } } /* Sample Input: 2 Sample Output: Coffee sizes: 1=Small 2=Medium 3=Large Please enter your selection: 2 Please insert 50 cents. Thank you for your business. */ |
在前面的示例中,整型变量 n 用于 switch case。注意还可以直接使用字符串变量 s。在这种情况下,可以以下列方式使用 switch case:
复制代码 | |
---|---|
switch(s) { case "1": // ... case "2": // ... } |
下面的示例显示了空 case 标签可以从一个 case 标签贯穿到另一个。
C# | 复制代码 |
---|---|
class SwitchTest2 { static void Main() { int n = 2; switch(n) { case 1: case 2: case 3: Console.WriteLine("It's 1, 2, or 3."); break; default: Console.WriteLine("Not sure what it is."); break; } } } // Output: It's 1, 2, or 3. |
C# 语言规范
有关更多信息,请参见 C# 语言规范中的以下各章节:
5.3.3.6 switch 语句
8.7.2 switch 语句