首頁 >後端開發 >C++ >是否有更好的替代方法來模擬C#中的類型開關?

是否有更好的替代方法來模擬C#中的類型開關?

Barbara Streisand
Barbara Streisand原創
2025-01-28 15:11:13789瀏覽

Are There Better Alternatives to Simulating a Switch on Type in C#?

C# 中是否存在比根據類型進行切換更好的替代方案?

提供的代碼片段是模擬在 C# 中根據類型進行切換的一種常見方法,當由於類型關係而無法進行真正的根據類型進行切換時,可以使用這種方法。但是,在不同的場景中,可能有幾種更合適的替代方案。

C# 7 及更高版本

隨著 C# 7 的引入,可以通過模式匹配實現真正的根據類型進行切換:

<code class="language-csharp">switch(shape)
{
    case Circle c:
        WriteLine($"圆形,半径为 {c.Radius}");
        break;
    case Rectangle s when (s.Length == s.Height):
        WriteLine($"{s.Length} x {s.Height} 正方形");
        break;
    case Rectangle r:
        WriteLine($"{r.Length} x {r.Height} 矩形");
        break;
    default:
        WriteLine("<未知形状>");
        break;
    case null:
        throw new ArgumentNullException(nameof(shape));
}</code>

C# 6

在 C# 6 中,可以在 switch 語句中使用 nameof() 運算符:

<code class="language-csharp">switch(o.GetType().Name) {
    case nameof(AType):
        break;
    case nameof(BType):
        break;
}</code>

C# 5 及更早版本

在 C# 5 之前,仍然可以模擬根據類型進行切換,但這需要使用包含類型名稱的字符串:

<code class="language-csharp">switch(o.GetType().Name) {
  case "AType":
    break;
}</code>

選擇哪種替代方案取決於應用程序的具體要求和使用的 C# 版本。

以上是是否有更好的替代方法來模擬C#中的類型開關?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn