C# Online ! 第廿二篇:邏輯課程 Part III ~ C# 控制陳述式–switch

  • 7742
  • 0
  • C#
  • 2011-07-08

C# Online ! 第廿二篇:邏輯課程 Part III ~ C# 控制陳述式–switch

各位朋友大家好! 這次要跟大家介紹的是 switch 陳述式 ,其實 switch 陳述式跟 if 陳述式 有些類似,他們都會依照判斷條件的結果去執行底下的程式,不同的地方在於如果我們使用 switch陳述式可以把本來要去判斷很多次的事情一次搞定,因為用 switch 會依照判斷條件的值去控制該執行哪一個動作,其中就是用 case 陳述式的方式來處理多重選取。

我們先來看一下 switch 陳述式的語法:

 

switch ( 參數值 )
{
     case <比較參數1>: 
         <當 參數值 == 比較參數1 的時候,執行這個陳述式。 >

         break; 
     case <比較參數2>: 
         <當 參數值 == 比較參數2 的時候,執行這個陳述式。 >

         break;
     ..

     ..

     ..
    case <比較參數N>: 
        <當 參數值 == 比較參數N 的時候,執行這個陳述式。 >

         break; 
    default: 
        <當 參數值 != 比較參數1.2 ~N 的時候,執行這個陳述式。 >

         break;
}

 

先從以上的語法介紹來解釋,參數值會去跟每一個比較參數去比對值是否相等,一定要兩個的值是一樣的,才會去執行它底下的陳述式,例如參數值去跟比較參數1的值做比對,如果比對的結果是不相等的,則會繼續去比對比較參數2的值是否相等,兩個的值是一樣的,才會去執行它底下的陳述式,如果一直比對到比較參數N都是不相等的,則會去執行default底下的陳述式。其實就很像我們上一篇介紹的if-else if去判斷條件一樣,當判斷條件為true,則執行底下的陳述式,否則(為false)繼續往下做條件判斷,只是這邊用switch其中的case幫我們搞定了這些條件判斷。

 

有幾點要注意的地方

  1. 一個 switch 陳述式可包含無限的 case 執行個體,但之中不能兩個 case 陳述式或多個擁有相同的值。
  2. 陳述式主體的執行從選定的陳述式開始,一直到 break 才會將程式控制權轉移出 case 主體為止。
  3. 如果沒有符合參數值的 case 運算式,程式控制權會轉移到選擇性 default 標籤隨後的陳述式。
  4. switch 陳述式內最多只能有一個 default 標記。
  5. 每個 case 區塊之後 (連 default 陳述式都包括在內) 都需要跳躍陳述式 (Jump Statement),例如 break
  6. 如果沒有 default 標記,程式控制權就會轉移到 switch 之外。

 

舉一個簡單的例子:

int caseSwitch = 3;
switch (caseSwitch)
{
    case 1: 
        Console.WriteLine("Case 1");
        break;
    case 2:
        Console.WriteLine("Case 2");
        break;
    case 3:
        Console.WriteLine("Case 3");
        break;
    default:
        Console.WriteLine("Default case");
        break;
}

 

 

這個例子我們可以很清楚的看到,int caseSwitch = 3; 所以會控制去執行 case 3 底下的陳述式,所以最後會顯示 case 3 在螢幕上。這邊如果我們把 非 1、2、3 的值給 caseSwitch ,則會跳到 default ,最後會顯示 Default case 在螢幕上。

還有一種方法是可以讓不同的值,去執行同一段程式陳述式,看以下的例子:

 

int caseSwitch = 2;
switch (caseSwitch)
{
    case 0:    
    case 1:
    case 2: 
        Console.WriteLine("Case 0,1or2");
        break;
    case 3:
        Console.WriteLine("Case 3");
        break;
    case 4:
        Console.WriteLine("Case 4");
        break;
    default:
        Console.WriteLine("Default case,not 0,1,2,3,or4.");
        break;
}

 

以上的例子,當 caseSwitch = 0,或是1、或是 2 都會顯示 Case 0,1or2 在螢幕上,如果caseSwitch 不等於 0, 1, 2, 3, 4 的話,則會跳到default,會顯示 Default case,not 0,1,2,3,or4. 在螢幕上,這個方法可以靈活的運用唷。

最後的舉例,我們把 switch運用在點餐上面,依照點的餐點不同,顯示出點的餐點與金額,例子如下:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace chapter22
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("餐點 : 1.魯肉飯 2.炒米粉 3.貢丸湯");
            Console.Write("您好!請輸入你要的餐點號碼:");
            string str = Console.ReadLine();
            int switchExp = int.Parse(str);
            int cost = 0;
            switch (switchExp)
            {
                case 1:
                    cost += 30;
                    break;
                case 2:
                    cost += 25;
                    break;
                case 3:
                    cost += 35;
                    break;
                default:
                    Console.WriteLine("不好意思,請您輸入 1、2 、3 其中一個號碼..");
                    break;
            }
            if (cost != 0)
            {
                Console.WriteLine("您點的餐共 {0} 元", cost);
            }
            Console.WriteLine("謝謝光臨~下次再來唷!");
            Console.ReadKey();
        }
        
    }
}

 

以上的例子,讓我想吃魯肉飯.. 會先把我們的餐點顯示在螢幕上,再讓客人去輸入他想吃的餐點號碼,最後會算出餐點的價錢,並且顯示謝謝光臨,看一下底下執行後的畫面吧:

 

ch22-01

 

ch22-02

 

ch22-03

 

 

 

有興趣的朋友,可以試著練習一次看看唷!

 

希望資深的前輩們與跟我一樣剛開始想學習C#的初心者,可以給我一些建議跟鼓勵,或是幫我按個讚!您的鼓勵就是我的動力! 感謝您們 ~

(本文中相關內容有參閱、引述MSDN)

 

 

 

 

 


如果這篇文章對您有幫助,請幫我點選「我要推薦」、按個讚、或是幫我推到其他平台;您的鼓勵將會是我繼續努力的一大動力!!

若是有任何指教或是需要討論之處,也不用客氣,請在下面留言給我,我將會儘速回覆~

Share | . . . . . . . . . .