- switch 語句中的 expression 必須是一個整型或枚舉類型,或者是一個 class 類型,其中 class 有一個單一的轉換函數將其轉換為整型或枚舉類型。
- 在前面的示例中,整型變量 n 用於 switch case。注意還可以直接使用字符串變量 s。在這種情況下,可以以下列方式使用 switch case: --參考msdn
-
switch(s) { case "1": // ... case "2": // ... }
- 在一個 switch 中可以有任意數量的 case 語句。每個 case 后跟一個要比較的值和一個冒號。
- case 的 constant-expression 必須與 switch 中的變量具有相同的數據類型,且必須是一個常量。
- 當被測試的變量等於 case 中的常量時,case 后跟的語句將被執行,直到遇到 break 語句為止。
- 當遇到 break 語句時,switch 終止,控制流將跳轉到 switch 語句后的下一行。
- 不是每一個 case 都需要包含 break。如果 case 語句為空,則可以不包含 break,控制流將會 繼續 后續的 case,直到遇到 break 為止。
- C# 不允許從一個開關部分繼續執行到下一個開關部分。如果 case 語句中有處理語句,則必須包含 break 或其他跳轉語句。
- 一個 switch 語句可以有一個可選的 default case,出現在 switch 的結尾。default case 可用於在上面所有 case 都不為真時執行一個任務。default case 中的 break 語句不是必需的。
- C# 不支持從一個 case 標簽顯式貫穿到另一個 case 標簽。如果要使 C# 支持從一個 case 標簽顯式貫穿到另一個 case 標簽,可以使用 goto 一個 switch-case 或 goto default。
注:
1、switch 語句中,參數范圍可以延續。

1 switch (j) 2 { 3 case 0: 4 string test = "test"; 5 Console.WriteLine(test +j); 6 return 0; 7 case 1: 8 test = "1"; 9 Console.WriteLine(test); 10 //return 1; 11 break; 12 case 2: 13 test = "2"; 14 Console.WriteLine(test); 15 break; 16 default: 17 return -1; 18 }