閱讀Stephens' C#教材第十八章筆記
Chapter 18 Making Choices.
本章將學習如何讓程式因為輸入的不同,採取不同的動作流程。
主要介紹兩種流程控制的敘述(Statement):IF敘述及SWITCH敘述
IF敘述中會有一個狀況比對(condition),如果比對結果為Ture才會執行其內的敘述
IF敘述的如下:
if (condition) statement;
例如:
decimal shipping = 5.00M;
if (total >= 100) shipping =0 ;
如果Statement超過一行,需要前後用大括弧將Statement的區域(block)圈出來,讓C#編譯器可以辨識。例如:
decimal shipping = 5.00M;
if (total >= 100)
{
shipping =0 ;
giveFreeGift = true;
}
IF敘述的變形有IF-ELSE, 連鎖 (CASCADING) IF敘述以及巢狀IF敘述,例如:
// IF-ELSE Statement
decimal shipping;
if (total < 100)
{
shipping = 5M;
}
else
{
shipping = 0M;
}
// CASCADING IF Statement
decimal shipping;
if (total < 20)
{
shipping = 5M;
}
else if (total < 50)
{
shipping = 7.5M;
}
else if (total < 75)
{
shipping = 10M;
}
else
{
shipping = 0M;
}
//Nested IF Statement
if (inCountry)
{
if (inCity)
{
saleTaxRate = 0.09M;
}
else
{
saleTaxRate = 0.07M;
}
}
else
{
saleTaxRate = 0.05M;
}
SWITCH敘述提供一種簡潔的方式處理類似於連鎖IF敘述的判斷,根據一開始的比對會有一個結果值,然後針對該結果值,執行對應的程式段,例如:
//Switch Statement
decimal lodgingPrice;
switch (hotelChoice)
{
case HotelChoice.LuxuryLodge:
lodgingPrice = 45;
break;
case HotelChoice.HamiltonArms:
lodgingPrice = 80;
break;
case HotelChoice.InvernessInn:
lodgingPrice = 165;
break;
default:
mesageBox.Show("Please select a hotel");
lodgingPrice = 0;
break;
}
SWITCH敘述包含有switch, case, break及default等元素,遇見 break便會結束SWITCH敘述,如果有default元素,則在比對結果值找不到匹配的情況下,會執行此default元素後的程式碼。
ConferenceCoster 程式示範使用IF及SWITCH敘述計算費用
SimpleEdit程式示範使用巢狀IF判斷是否檔案已修改,或是使用者按下OK鈕
TRY IT中示範如何設計一個OrderForm計算費用程式