评估多个布尔值与if的开关的C#性能(特定用例)

c#

我最近开始维护一个成熟的产品,并且在整个过程中我看到像这样使用 switch 语句:

switch (true)
{
    case true when object.firstBoolValue:
        // do something
        break;
    case true when object.secondBoolValue:
        // do something
        break;
    case true when object.thirdBoolValue:
        // do something
        break;
}

就个人而言,我更愿意这样写:

if (object.firstBoolValue)
    // do something
    return;
if (object.secondBoolValue)
    // do something
    return;
if (object.thirdBoolValue)
    // do something
    return;

// do default
return;

主要问题:哪个更有利于可读性?次要问题:哪种设计(如果有)性能更好?

回答

它们目前编译为完全相同的 IL,所以不:没有有趣的区别 - 尽管这是一个可以更改的实现细节。

坦率地说,switch这里看起来很奇怪。


以上是评估多个布尔值与if的开关的C#性能(特定用例)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>