评估多个布尔值与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这里看起来很奇怪。