ReSharper并删除多余的括号.C#中的OR与AND逻辑

Rob*_*ood 4 c# resharper

我最近注意到ReSharper(2016.3)现在要删除C#语句中的冗余括号,我相信这会导致预期的行为发生变化.这是声明:

private bool GetAutoAdjust( int catType )
{
  return ( catType == ChargeTypeIds.Penalty && _appSettingRepository.AutoRemovePen ) ||
         ( catType == ChargeTypeIds.Interest && _appSettingRepository.AutoRemoveInt ) ||
         ( catType == ChargeTypeIds.Discount && _appSettingRepository.AutoRemoveDis );
}
Run Code Online (Sandbox Code Playgroud)

真的相当于这一个吗?

private bool GetAutoAdjust( int catType )
{
  return  catType == ChargeTypeIds.Penalty && _appSettingRepository.AutoRemovePen  ||
          catType == ChargeTypeIds.Interest && _appSettingRepository.AutoRemoveInt  ||
          catType == ChargeTypeIds.Discount && _appSettingRepository.AutoRemoveDis ;
}
Run Code Online (Sandbox Code Playgroud)

也许我错误地认为C#如何评估OR子句与SQL Server之类的东西相比,但是OR表达式只评估它的LEFT并且只是在它的右侧,或者实际上它是否预先连接所有的AND条件在评估OR条件之前?

Dav*_*idG 6

在C#中,运算符有一个优先顺序.从该文件可以看出,&&来之前,||所以在技术上ReSharper的是正确的,这些括号是多余的.

话虽如此,你觉得让它们进入是更明显的 - 然后让它们进入.代码的可读性应该始终是一个优先事项.