C# 中的 Switch 語句會失敗嗎?
C# 中的 Switch 語句通常會執行與符合的 case 相關的程式碼,然後退出 switch 。但是,在某些情況下,可能需要將一種情況轉移到另一種情況,稱為「失敗」。
在提供的範例中,NumberToWords 方法嘗試將數字轉換為其對應的單字表示形式。它使用三個陣列來表示數字、十和十。 switch 語句考慮輸入數字的長度以符合適當的大小寫:
但是,C# 編譯器會拋出錯誤,因為 switch 語句沒有明確指定每個情況後執行的位置。預設情況下,C# 要求每個 case 都有一個 break 語句或 goto 語句以防止失敗。
要在C# 中實現失敗,您可以利用以下技術:
空案例:定義一個沒有程式碼的案例,允許執行下一個案例
switch (/*...*/) { case 0: break; // fall through to case 1 case 1: // do something break; }
goto case:使用 goto 語句跳到 switch 內的特定 case。
switch (/*...*/) { case 0: goto case 1; case 1: // do something break; }
goto default:使用goto default語句跳到預設情況。
switch (/*...*/) { case 0: goto default; default: // do something break; }
在原始NumberToWords 範例中,goto 可用於實現所需的fallthrough 行為:
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 case 1; case 1: int o = number % 10; ans += numbers[o]; break; default: throw new ArgumentException("number"); }
雖然fallthrough 可以提供更加簡潔,謹慎使用很重要。過多的失敗可能會導致程式碼混亂且難以維護,因此應謹慎使用。
以上是如何在 C# Switch 語句中實現 Fallthrough 行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!