超出C#'s'開關的限制'
c#不直接支持“開關”語句。這種限制來自類型層次結構的固有歧義。一個對象可能匹配多種情況。 但是,存在幾種優雅的解決方法來實現與類型有關的邏輯。
>利用模式匹配(C#7和更高版本)
>模式匹配提供了一種簡潔且可讀性的方法,可以在>語句中處理基於類型的邏輯。 觀察以下示例:
switch
>基於名稱的開關(C#6及以後)
<code class="language-csharp">switch (shape) { case Circle c: Console.WriteLine($"Circle with radius {c.Radius}"); break; case Rectangle s when (s.Length == s.Height): Console.WriteLine($"{s.Length} x {s.Height} square"); break; case Rectangle r: Console.WriteLine($"{r.Length} x {r.Height} rectangle"); break; // ... more cases }</code>
>運算符,根據該類型的名稱啟用開關:
nameof()
>這些方法有效地模仿“開啟類型”,但它們可能並不總是提供與專用語言功能相同的優雅或可維護性。 選擇取決於C#版本和所需的代碼清晰度級別。
以上是如果沒有直接的'開關”功能,我們如何在C#中實現與類型有關的邏輯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!