首頁 > 後端開發 > C++ > Fallthrough 行為在 C# Switch 語句中如何運作,以及何時應該使用「goto case」?

Fallthrough 行為在 C# Switch 語句中如何運作,以及何時應該使用「goto case」?

Linda Hamilton
發布: 2025-01-03 06:37:40
原創
478 人瀏覽過

How Does Fallthrough Behavior Work in C# Switch Statements, and When Should `goto case` Be Used?

C# Switch 語句中的失敗行為

在 C# 中,switch 語句允許在符合多個情況時順序執行程式碼。但是,預設情況下,switch 語句需要在每個 case 末端有一個明確的 break 語句,以防止意外行為。

考慮以下程式碼範例:

string NumberToWords(int number)
{
    string[] numbers = new string[] 
        { "", "one", "two", "three", "four", "five", 
          "six", "seven", "eight", "nine" };
    string[] tens = new string[] 
        { "", "", "twenty", "thirty", "forty", "fifty", 
          "sixty", "seventy", "eighty", "ninety" };
    string[] teens = new string[]
        { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
          "sixteen", "seventeen", "eighteen", "nineteen" };

    string ans = "";
    switch (number.ToString().Length)
    {
        case 3:
            ans += string.Format("{0} hundred and ", numbers[number / 100]);
        case 2:
            int t = (number / 10) % 10;
            if (t == 1)
            {
                ans += teens[number % 10];
                break;
            }
            else if (t > 1)
                ans += string.Format("{0}-", tens[t]);
        case 1:
            int o = number % 10;
            ans += numbers[o];

            break;
        default:
            throw new ArgumentException("number");
    }
    return ans;
}
登入後複製

此程式碼嘗試將數字及其字串表示形式。但是,switch 語句會引發錯誤,指出控制不能從情況 3 轉移到情況 2,以及從情況 2 轉移到預設情況。原因是在 C# 中,switch 語句需要明確中斷以防止後續 case 的意外執行。

要實現失敗行為,可以使用特殊的 goto case 語法。以下是範例中的實作方式:

switch (number.ToString().Length)
{
    case 3:
        ans += string.Format("{0} hundred and ", numbers[number / 100]);
        goto case 2;
    case 2:
        int t = (number / 10) % 10;
        if (t == 1)
        {
            ans += teens[number % 10];
            break;
        }
        else if (t > 1)
            ans += string.Format("{0}-", tens[t]);
        goto default;
    case 1:
        int o = number % 10;
        ans += numbers[o];

        break;
    default:
        throw new ArgumentException("number");
}
登入後複製

在此修改後的程式碼中,goto case 關鍵字允許執行跳至下一個 case,而不需要明確的 break 語句。透過在 case 3 之後加入 goto case 2,無論輸入數字的長度為何,都會執行該 case 下面的程式碼(轉換十和個)。類似地,在 case 2 之後新增 goto default 可確保始終執行 default case。

在某些情況下可能需要這種失敗行為,例如在提供的範例中將數字轉換為其對應的單字表示形式。然而,明智且謹慎地使用它很重要,因為粗心的失敗可能會導致複雜且容易出錯的程式碼。

以上是Fallthrough 行為在 C# Switch 語句中如何運作,以及何時應該使用「goto case」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板