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

C# switch 語句(二):禁止貫穿、goto case、字串 case、null 標籤與任意排序

     編輯:關於C語言

C# switch 強制禁止隱含貫穿,每個 case 必須以 break、goto case、goto default、return、throw 等明確跳離。這消除 C/C++ 常見的漏寫 break Bug。

禁止貫穿與 goto case


// ❌ 錯誤:case 1 結束無跳離
switch (m) { case 1: total -= 31; case 2: total -= 28; ... }

// ✅ 正確:明確 goto case
switch (m) {
    case 1: total -= 31; goto case 2;
    case 2: total -= 28; goto case 3;
    ...
    case 12: total -= 31; goto default;
    default: total += day; break;
}

任意排序優勢

因無隱含貫穿,case 順序不影響語意,可依業務邏輯/可讀性排序。

字串作為 case 標籤


string text = GetButtonCaption();
switch (text) {
    case "OK": ShowMessage("Save and exit"); break;
    case "Retry": ShowMessage("Return and retry"); break;
    case "Abort": ShowMessage("Abort and exit"); break;
    case "Help": ShowMessage("Get help"); break;
}

C# 允許 string、enum、整數型別作為控制型別;case 標籤允許 null。

其他合法結束方式


switch (i) {
    case 0: while (true) F();           // 無窮迴圈不返回
    case 1: throw new ArgumentException(); // 拋出例外
    case 2: return;                      // 直接返回
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved