switch (C# 參考)
更新:2007 年 11 月
switch 陳述式是一種控制陳述式,透過將程式控制權轉移到主體內其中一個 case 陳述式的方式來處理多重選取,如下列範例:
範例
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 陳述式都包括在內) 需要跳躍陳述式 (Jump Statement),例如 break。有一個情形例外 (不同於 C++ switch 陳述式),C# 不支援從 case 標籤繼續到下一個的隱含程序。唯一的例外是 case 陳述式沒有程式碼。
如果沒有符合參數值的 case 運算式,程式控制權會轉移到選擇性 default 標籤隨後的陳述式。如果沒有 default 標記,程式控制權就會轉移到 switch 之外。
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.
*/
- 在前面的範例中,switch case 使用了整數類資料型別變數 n。請注意您也可以直接使用字串變數 s。在這個範例中,您也可以採用下列方式使用 switch 的 case:
switch(s)
{
case "1":
// ...
case "2":
// ...
}
下列範例說明遇到內容空白的 case 標記時,程式可以直接從該標記繼續往下一個 case 標記執行。
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 陳述式