C# if else, switch

  • 12288
  • 0
  • C#
  • 2020-06-23

此為個人學習筆記,如果有理解錯誤或是相關資訊歡迎留言告知與分享,謝謝!

if...else

if(條件判斷)

{

 條件判斷 == true

}

else

{

 條件判斷 == false

}

 

e.g.,

如果有個人很膚淺,他說: 跟我在一起的對象一定要身高超過180(包含180) 

if( heOrShe >= 180)

{

 Console.WriteLine("在一起");

}

else

{

 Console.WriteLine("Bye~");

}

若沒有寫else?

if( heOrShe >= 180)

{

 Console.WriteLine("在一起");

}

Console.WriteLine("Bye~");

  • heOrShe = 181時

           印出結果

           在一起

           Bye~

  • heOrShe = 170時

           印出結果

           Bye~

           

為什麼 heOrShe = 181時兩個結果都跑出來了,WHY?

因為若沒加else

對於程式來說"條件判斷 == false"的情況並沒有相關可執行的程式碼

對他來說 Console.WriteLine("Bye~");並不是 "條件判斷 == false "時的狀況

而是if else 後,接下來的程式碼

if( heOrShe >= 180)

{

 條件判斷 == true

}

else

{

}

Console.WriteLine("Bye~"); (接下去的程式碼)

 


if....else if....else

 

if(條件判斷)

{

if的條件判斷 == true

跑此區塊程式碼

}

else if(條件判斷)

{

 if的條件判斷 == false && else if的條件判斷 == true

 跑此區塊程式碼

 (else if 能寫多個)

}

else

{

 以上條件判斷皆 == false

 跑此區塊程式碼

}

 

  • 條件判斷的優先順序:if > 第一個else if > .... > 最後一個else if > else

 

e.g.,

如果有一個人說:另外一半身高最理想是180, 沒180的話有170也是蠻理想的, 就算沒有170,至少一定要有160!!

if( heOrShe >= 180)

{

 Console.WriteLine("你是真愛~~");

}

 else if (heOrShe >= 170)

{

 Console.WriteLine("你是優質好菜~");

}

else if (heOrShe >= 160)

{

 Console.WriteLine("你,我可以");

}

else

{

 Console.WriteLine("bye~");

}


switch

switch(要對比的變數)

{    

    //可以寫很多個case

    case 選項A:

        變數 == 選項A時

        跑此區塊程式碼

        // 跑到break;時,則跳出switch

        break;

    case 選項B:

        變數 == 選項B時

        跑此區塊程式碼

        break;

    //default不一定要寫

    default:

       若都不符合以上case選項,則跑此區塊程式碼 

        break;

}

 

e.g.,

string food = "想查詢的食物名";

switch(food)

{    

    case "鮭魚生魚片":

        Console.WriteLine("一盒100元");

        break;

    case "半筋半肉牛肉麵":

        Console.WriteLine("一碗130元");

        break;

    case "霸王牛排":

        Console.WriteLine("一客280元");

        break;

    default:

        Console.WriteLine("這間店沒有這個選項喔~");

        break;

}

        Console.WriteLine("跳出switch囉");

 

  • Yui想知道鮭魚生魚片的價格(food = "鮭魚生魚片")

           印出結果

           一盒100元

  • Albert想知道霸王牛排的價格(food = "霸王牛排")

           印出結果

           一客280元

  • Samon(我家狗狗)想知道狗飼料的價格(food = "狗飼料")

           印出結果

           這間店沒有這個選項喔~

 

若沒有寫default??

如同

    default:

     //沒寫任何東西

程式會繼續跑接下來的程式碼

  • Samon(我家狗狗)想知道狗飼料的價格(food = "狗飼料")

           印出結果

           跳出switch囉~

 

若沒有寫break??

  1. 若該case內程式碼為空,則沒關係  

           且若該case的選項 == 變數

           則程式碼會執行下一個case直到遇到break;

           可用地方:若鮭魚生魚片與半筋半肉牛肉麵皆是一碗130元時

                             那麼可如下列程式 case "鮭魚生魚片":內不寫程式,

        擇選鮭魚生魚片或是半筋半肉麵

        都會跑到 Console.WriteLine("一碗130元");這行程式碼

 

switch(food)

{    

    case "鮭魚生魚片":

    //空

    case "半筋半肉牛肉麵":

        Console.WriteLine("一碗130元");

        break;

    case "霸王牛排":

        Console.WriteLine("一客280元");

    default:

        Console.WriteLine("這間店沒有這個選項喔~");

        break;

}
  • Yui想知道鮭魚生魚片的價格(food = "鮭魚生魚片") 

           印出結果

           一碗130元

 

        2. 若沒有寫break的case不為空

switch(food)

{    

    case "鮭魚生魚片":

        Console.WriteLine("一盒100元");

    case "半筋半肉牛肉麵":

        Console.WriteLine("一碗130元");

    case "霸王牛排":

        Console.WriteLine("一客280元");

}

            則會直接出現錯誤訊息,如下圖

 


if...else與switch 差異

  • switch的效能較好(?)

  • switch的程式碼比較清楚乾淨(?)