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 陳述式

請參閱

概念

C# 程式設計手冊

參考

C# 關鍵字

The switch Statement

if-else (C# 參考)

其他資源

C# 參考