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

C# 條件語句:if-else 分支與 switch 多路選擇完整指南

     編輯:關於C#

選擇結構概覽

if-else 語法


// 單分支
if (condition) statement;

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

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

// 巢狀
if (outer) {
    if (inner) { } else { }
} else { }

關鍵規則

  • 條件必須為 bool 型別 (C# 不支援整數隱含轉換)
  • 單行陳述式可省略大括號,但建議保留防維護錯誤
  • else 配對最近的未配對 if (懸空 else 問題)

switch 語法 (C# 8.0+ 增強)


// 傳統 switch (離散值)
switch (day) {
    case 1: case 2: case 3: case 4: case 5: return "Weekday";
    case 6: case 7: return "Weekend";
    default: throw new ArgumentException();
}

// 型別模式 (C# 7.0)
switch (obj) {
    case int i: return i.ToString();
    case string s: return s;
    case null: return "null";
    default: return "?";
}

// Switch 運算式 (C# 8.0) - 運算式主體
var result = day switch {
    1 or 2 or 3 or 4 or 5 => "Weekday",
    6 or 7 => "Weekend",
    _ => throw new ArgumentException()
};

// 屬性模式 (C# 8.0)
var desc = person switch {
    { Age: >= 18, IsStudent: true } => "Adult Student",
    { Age: >= 18 } => "Adult",
    { Age: < 18 } => "Minor",
    _ => "Unknown"
};

switch 核心規則

  • 不可貫穿:每個 case 必須以 break/return/throw/goto case 結束
  • case 標籤支援:常數、null、型別模式、關係模式、屬性模式
  • default 最多一個,位置任意 (建議最後)
  • 控制型別:sbyte, byte, short, ushort, int, uint, long, ulong, char, string, enum 及其可為 null 版本

goto case 明確貫穿 (罕用)


switch (month) {
    case 1: total -= 31; goto case 2;
    case 2: total -= 28; goto case 3;
    case 3: total -= 31; goto case 4;
    // ...
    case 12: total -= 31; goto default;
    default: total += day; break;
}

字串作為 case 標籤


string cmd = Console.ReadLine();
switch (cmd) {
    case "start": Start(); break;
    case "stop": Stop(); break;
    case "restart": Restart(); break;
    default: Console.WriteLine("Unknown command"); break;
}

總結

if-else 處理複雜布林邏輯,switch 處理離散值/型別/模式比對。現代 C# switch 運算式與模式比對大幅提升表達力。核心鐵律:條件為 bool、switch 不可隱式貫穿、善用模式比對簡化程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
語句適用場景關鍵特性
if-else布林條件、區間判斷、複雜邏輯組合靈活、支援任意運算式
switch離散值比對、型別模式、模式比對 (C# 7+)可讀性佳、編譯器優化、不可貫穿