提供的代碼片段是模擬在 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中文網其他相關文章!