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

C# 流程控制完整指南:選擇、迴圈、跳轉、條件編譯與例外處理

     編輯:關於C#

流程控制關鍵字總覽

選擇結構

if-else


if (score >= 90) grade = 'A';
else if (score >= 80) grade = 'B';
else grade = 'C';

// 單行陳述式可省略大括號,但建議保留以防維護錯誤
if (flag) DoSomething();

條件必須為 bool 型別 (C# 不支援整數隱含轉換)。

switch (模式比對增強)


// 傳統 switch (C# 7.0 前)
switch (day) {
    case 1: case 2: case 3: case 4: case 5: return "平日";
    case 6: case 7: return "假日";
    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 "unknown";
}

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

關鍵規則:不允許貫穿,每個 case 必須以 break/return/throw/goto case 結束。

迴圈結構

for


for (int i = 0; i < 10; i++) { ... }
// 多變數初始化/迭代
for (int i = 0, j = 10; i < j; i++, j--) { ... }
// 無限迴圈
for (;;) { if (done) break; }

foreach


foreach (var item in collection) { ... }
// 僅讀取,不可修改迴圈變數
// 適用於實作 IEnumerable/IEnumerable 的型別

while / do-while


while (condition) { ... }        // 先判斷
do { ... } while (condition);    // 至少執行一次

跳轉陳述式

類別關鍵字用途
選擇if, else, switch, case條件分支
迴圈while, do, for, foreach重複執行
跳轉break, continue, goto, return, throw改變執行順序
條件編譯#if, #elif, #else, #endif, #define, #undef編譯期包含/排除程式碼
例外處理try, catch, finally, throw錯誤處理與資源清理

條件編譯


#define DEBUG
#undef TRACE

#if DEBUG && !RELEASE
    Console.WriteLine("Debug mode");
#elif RELEASE
    Console.WriteLine("Release mode");
#else
    Console.WriteLine("Other");
#endif

#warning 這是編譯警告
#error 這是編譯錯誤,會中止建置

符號定義必須在「實際程式碼」之前;#if 區塊可巢狀。

例外處理架構


try
{
    // 可能拋出例外的程式碼
    riskyOperation();
}
catch (FileNotFoundException ex) when (ex.FileName.EndsWith(".tmp")) // C# 6 例外篩選
{
    // 處理特定例外
}
catch (IOException ex)
{
    // 處理基類例外 (順序:具體 → 一般)
}
catch (Exception ex)
{
    // 兜底處理
}
finally
{
    // 無論是否發生例外、是否 return/break/throw,必定執行
    // 適用於資源釋放、鎖釋放、記錄
}

最佳實踐速查

  • switch 優於長 if-else 鏈 (可讀性、效能)
  • foreach 優於 for 遍歷集合 (語意清晰、避免索引錯誤)
  • 迴圈變數在 foreach 中為 唯讀,不可修改
  • finally 區塊 永遠執行 (含 goto、return、例外傳播)
  • 捕捉例外順序:衍生類別在前,基類在後
  • 條件編譯用於除錯追蹤、平台差異、功能開關,勿濫用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
關鍵字效果常見用途
break離開最近的迴圈/switch提前結束搜尋
continue跳過本次迴圈剩餘,進入下一次略過無效項目
goto label跳轉到標記switch case 間跳轉、狀態機
return離開方法,可帶回傳值正常/提前返回
throw拋出例外,啟動例外處理機制錯誤通報