首页 >后端开发 >C++ >如果没有直接的'开关”功能,我们如何在C#中实现与类型有关的逻辑?

如果没有直接的'开关”功能,我们如何在C#中实现与类型有关的逻辑?

Linda Hamilton
Linda Hamilton原创
2025-01-28 15:16:09223浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn