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

Alp*_*o77 0 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

// do default
return;
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ell 7

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

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