首頁 > 後端開發 > C++ > 如果沒有直接的'開關”功能,我們如何在C#中實現與類型有關的邏輯?

如果沒有直接的'開關”功能,我們如何在C#中實現與類型有關的邏輯?

Linda Hamilton
發布: 2025-01-28 15:16:09
原創
181 人瀏覽過

How Can We Implement Type-Dependent Logic in C# Without a Direct

超出C#'s'開關的限制' c#不直接支持“開關”語句。這種限制來自類型層次結構的固有歧義。一個對象可能匹配多種情況。 但是,存在幾種優雅的解決方法來實現與類型有關的邏輯。 >

>利用模式匹配(C#7和更高版本)

> 在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>
登入後複製
c#6及以後的版本提供

>運算符,根據該類型的名稱啟用開關:> 基於字符串的開關(C#5和更早)

對於較舊的C#版本(5及以下),使用類型名稱的基於字符串的開關是必要的:

nameof()>這些方法有效地模仿“開啟類型”,但它們可能並不總是提供與專用語言功能相同的優雅或可維護性。 選擇取決於C#版本和所需的代碼清晰度級別。

>

以上是如果沒有直接的'開關”功能,我們如何在C#中實現與類型有關的邏輯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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