超出C#'s'开关的限制'
c#不直接支持“开关”语句。这种限制来自类型层次结构的固有歧义。一个对象可能匹配多种情况。 但是,存在几种优雅的解决方法来实现与类型有关的逻辑。
>利用模式匹配(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及以后的版本提供
>运算符,根据该类型的名称启用开关:
nameof()
>这些方法有效地模仿“开启类型”,但它们可能并不总是提供与专用语言功能相同的优雅或可维护性。 选择取决于C#版本和所需的代码清晰度级别。
以上是如果没有直接的'开关”功能,我们如何在C#中实现与类型有关的逻辑?的详细内容。更多信息请关注PHP中文网其他相关文章!