在 C# 程式設計中,if 語句是控制程式流程的基石。它允許我們根據布林運算式的真偽值,決定執行哪一段程式碼。基本語法結構如下:
if (booleanExpression)
statement-1;
else
statement-2;
當 booleanExpression 為 true 時執行 statement-1,否則執行 statement-2。else 區塊為選用,若省略且條件為假,程式將直接跳過不執行任何動作。
C# 嚴格要求 if 括號內必須是布林運算式(bool 型別),這與 C/C++ 允許整數隱含轉換截然不同。例如:
int seconds = 59;
// 錯誤寫法:指派而非比較
if (seconds = 59) // 編譯錯誤:無法隱含將 'int' 轉換為 'bool'
// 正確寫法
if (seconds == 59)
seconds = 0;
else
seconds++;
這項設計有效防止了經典的「誤寫成指派運算子」Bug,提升程式碼健全度。
當需要在條件成立時執行多行程式碼,必須用大括號 { } 包裹成一個區塊:
if (seconds == 59)
{
seconds = 0;
minutes++;
}
else
seconds++;
重要提醒: 若漏寫大括號,編譯器僅將第一行視為 if 的主體,後續程式碼脫離條件判斷,且 else 將找不到對應的 if 導致語法錯誤。
透過巢狀結構可串聯多個條件判斷,形成互斥的決策鏈:
if (day == 0)
dayName = "Sunday";
else if (day == 1)
dayName = "Monday";
else if (day == 2)
dayName = "Tuesday";
// ... 以此類推
else
dayName = "unknown";
此結構確保條件由上而下依序檢查,僅執行首個符合條件的區塊。
在 Visual Studio 2005 中開啟 Selection 專案,修改 dateCompare 方法,利用巢狀 if 依序比較年、月、日:
private int dateCompare(DateTime left, DateTime right)
{
int result;
if (left.Year < right.Year)
result = -1;
else if (left.Year > right.Year)
result = 1;
else if (left.Month < right.Month)
result = -1;
else if (left.Month > right.Month)
result = 1;
else if (left.Day < right.Day)
result = -1;
else if (left.Day > right.Day)
result = 1;
else
result = 0;
return result;
}
執行後點擊 Compare 按鈕,文字方塊將正確顯示比較結果(如 first == second : True),驗證邏輯無誤。
圖示:正確的日期比較輸出結果