提供的代码片段是模拟在 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中文网其他相关文章!