首页 > 后端开发 > C++ > 是否有更好的替代方法来模拟C#中的类型开关?

是否有更好的替代方法来模拟C#中的类型开关?

Barbara Streisand
发布: 2025-01-28 15:11:13
原创
853 人浏览过

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

C# 中是否存在比根据类型进行切换更好的替代方案?

提供的代码片段是模拟在 C# 中根据类型进行切换的一种常见方法,当由于类型关系而无法进行真正的根据类型进行切换时,可以使用这种方法。但是,在不同的场景中,可能有几种更合适的替代方案。

C# 7 及更高版本

随着 C# 7 的引入,可以通过模式匹配实现真正的根据类型进行切换:

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));
}
登录后复制

C# 6

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

switch(o.GetType().Name) {
    case nameof(AType):
        break;
    case nameof(BType):
        break;
}
登录后复制

C# 5 及更早版本

在 C# 5 之前,仍然可以模拟根据类型进行切换,但这需要使用包含类型名称的字符串:

switch(o.GetType().Name) {
  case "AType":
    break;
}
登录后复制

选择哪种替代方案取决于应用程序的具体要求和使用的 C# 版本。

以上是是否有更好的替代方法来模拟C#中的类型开关?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板