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

C# switch 語句語法規則與 XML 字元轉義實作

     編輯:關於C#

何時使用 switch?

當多個 if-else 連續判斷同一運算式對不同常數值時,改用 switch 更清晰、效能更佳:

// 多層 if-else
if (day == 0) dayName = "Sunday";
else if (day == 1) dayName = "Monday";
else if (day == 2) dayName = "Tuesday";
// ...

// 改為 switch
switch (day)
{
    case 0: dayName = "Sunday"; break;
    case 1: dayName = "Monday"; break;
    case 2: dayName = "Tuesday"; break;
    // ...
    default: dayName = "Unknown"; break;
}

switch 語法結構

switch (控制運算式)
{
    case 常數運算式1:
        敘述區塊1; break;
    case 常數運算式2:
        敘述區塊2; break;
    // ...
    default:
        預設敘述區塊; break;
}
  • 控制運算式只求值一次。
  • 符合的 case 開始執行,直到遇到 break、return 或 throw。
  • 無符合且有 default 時執行 default;否則跳過整個 switch。

嚴格遵守的規則

規則說明
型別限制僅支援基本型別(int、string、enum 等),複雜型別請用 if
case 必為常數不可為執行期才能決定的運算式
case 值唯一不允許重複常數值
禁止貫穿C# 強制每個 case 以 break/return/throw 結束,防止 C/C++ 常見的漏寫 break bug
允許堆疊 case連續多個 case 無敘述可共用同一區塊

堆疊 case 範例(合法)

switch (suit)
{
    case Suit.Hearts:
    case Suit.Diamonds:
        color = "Red"; break; // 兩種花色同邏輯
    case Suit.Clubs:
    case Suit.Spades:
        color = "Black"; break;
}

錯誤:標籤間有程式碼卻未 break

case Suit.Clubs:
    color = "Black"; // 有敘述
case Suit.Spades:    // ❌ 編譯錯誤:貫穿前有程式碼卻無 break
    color = "Black";
    break;

實作練習:XML 特殊字元轉義

建立 Windows Forms 專案,兩個 TextBox 以 Button 分隔,點擊複製時將上方文字中的 XML 特殊字元轉義:

private void copyOne(char c)
{
    switch (c)
    {
        case '<': target.Text += "<"; break;
        case '>': target.Text += ">"; break;
        case '&': target.Text += "&"; break;
        case '"': target.Text += """; break;
        case '\'': target.Text += "'"; break;
        default: target.Text += c; break;
    }
}

測試輸入 inRange = (lo <= number) && (number <= hi);,複製後正確轉義為 inRange = (lo &lt;= number) &amp;&amp; (number &lt;= hi);。

SwitchStatement 介面

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved