首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# if 語句完整指南:布林條件、巢狀結構、懸空 Else 與常見錯誤

     編輯:關於C#

語法形式


// 單分支
if (condition) statement;

// 雙分支
if (condition) statement1; else statement2;

// 多重分支
if (cond1) { }
else if (cond2) { }
else if (cond3) { }
else { }

核心規則:條件必須為 bool


// 正確
if (args.Length == 0) { }
if (flag) { }

// 錯誤:C# 不支援整數/參考隱含轉換為 bool
if (args.Length) { }        // CS0029
if (obj) { }                // CS0029
if (ptr != null) { }        // 正確:明確比較

大括號最佳實踐

  • 單行陳述式可省略大括號
  • 但強烈建議保留:防止後續修改時邏輯錯誤
  • 多行必須加大括號

巢狀 if 與懸空 Else


if (x > 0)
    if (y > 0) Console.WriteLine("Q1");
    else Console.WriteLine("Q4"); // 此 else 配對內層 if
else
    Console.WriteLine("Left");    // 此 else 配對外層 if

// 等價明確版本
if (x > 0) {
    if (y > 0) Console.WriteLine("Q1");
    else Console.WriteLine("Q4");
} else {
    Console.WriteLine("Left");
}

規則:else 總是配對最近的未配對 if。用大括號消除歧義。

實戰範例:數學函數分段定義


// f(x) =  1  (x > 0)
//       =  0  (x == 0)
//       = -1  (x < 0)

int Sign(double x)
{
    if (x > 0) return 1;
    else if (x == 0) return 0;
    else return -1;
}

// 簡潔版 (C# 7.0+ 模式比對)
int Sign(double x) => x switch {
    > 0 => 1,
    0 => 0,
    _ => -1
};

常見錯誤對照表

防禦性程式設計模式


// Guard Clauses:提前返回,減少巢狀
public void Process(User user, Data data)
{
    if (user == null) throw new ArgumentNullException(nameof(user));
    if (!user.IsActive) return;
    if (data == null) return;
    
    // 核心邏輯:淺層、線性
    DoWork(user, data);
}

總結

if 是最基礎的條件分支,核心鐵律:條件為 bool、else 配對最近 if、善用大括號消除歧義。現代 C# 可用 switch 運算式、模式比對、Guard Clauses 簡化複雜條件邏輯,提升可讀性與維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
錯誤代碼程式碼原因修正
CS0029if (count) {}int 不能隱含轉換 boolif (count > 0) {}
CS0127if (true) return; 後有碼偵測到不可到達程式碼移除或調整邏輯
CS0162if (false) {}偵測到不可到達程式碼 (警告)檢查條件或移除
邏輯錯誤if (a = b) {}指派而非比較 (C# 編譯錯誤,因 a=b 為 int)if (a == b) {}