有些條件判斷并非簡單的真假模式,而是在多種可能中選擇一個處理。這種情況,我們需要使用switch case語句進行處理。
以下是對上海地鐵自動售票機的模拟
static void Main(string[] args)
{
//輸出提示資訊
System.Console.WriteLine("歡迎使用上海地鐵自動售票機");
System.Console.WriteLine("請選擇你需要購買的票價:");
System.Console.WriteLine("1 2 3");
System.Console.WriteLine("4 5 6");
System.Console.WriteLine("7 8 9");
string option = System.Console.ReadLine();//接受使用者在控制台輸入的字元,以回車結束
switch (option)
{
case "3":
System.Console.WriteLine("你選擇了3元票價");
break;
case "4":
System.Console.WriteLine("你選擇了4元票價");
case "5":
System.Console.WriteLine("你選擇了5元票價");
case "6":
System.Console.WriteLine("你選擇了6元票價");
}
}
上述代碼運作的結果如圖。如果你輸入正确的數字:3、4、5、6系統就會提示你選擇的票價,如果你輸入的是超過範圍的數字,則系統沒有任何提示。
switch 語句是一個控制語句,它通過将控制傳遞給其體内的一個 case 語句來處理多個選擇。控制傳遞給與給定的值比對的 case 語句。switch 語句可以包括任意數目的 case 執行個體,但是任何兩個 case 語句都不能具有相同的值。語句體從標明的語句開始執行,直到 break 将控制傳遞到 case 體以外。
switch 語句除了可以處理有比對的值的情況,還可以處理沒有任何 case 表達式與開關值比對的情況,這種控制由default 标簽處理。如果沒有 default 标簽,則控制傳遞到 switch 以外。
下面的代碼在原先基礎上添加了default 标簽,提供了使用者的更多的體驗。
System.Console.WriteLine("3元,請輸入3");
System.Console.WriteLine("4元,請輸入4");
System.Console.WriteLine("5元,請輸入5");
System.Console.WriteLine("6元,請輸入6");
default:
System.Console.WriteLine("對不起,你輸入了一個超越範圍的值");
}
任何兩個 case 語句不能具有相同的值。C# 不支援從一個 case 标簽顯式貫穿到另一個 case 标簽,在每一個 case 塊的後面,都必須有一個跳轉語句。但例外的是:當 case 語句中沒有代碼時,空 case 标簽可以從一個 case 标簽貫穿到另一個。
以下代碼描述了當使用者輸入1、2、3的時候,系統都認為使用者要選擇3元的票價。當輸入了6、7、8、9的時候,都認為使用者選擇了6元的票價。
而使用者輸入了一個不在提示範圍的值,會提示使用者輸入錯誤。

Code
初學者注意:
當對一個變量(僅一個變量)需要作多條間判斷或者類型判斷,我們建議可以考慮使用switch。
代碼要注意縮進,在VS2008的IDE中,使用菜單【編輯】|【進階】|【設定文檔的格式】可以自動完成縮進。
本文轉自shyleoking 51CTO部落格,原文連結:http://blog.51cto.com/shyleoking/805199