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

标签 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 );
}

真的相当于这个吗?

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

与 SQL Server 之类的东西相比,C# 计算 OR 子句的方式可能是我的错误,但不是仅在表达式的左侧和右侧对表达式进行 OR 计算,或者它实际上是否预连接了所有的表达式评估 OR 条件之前的 AND 条件?

最佳答案

在 C# 中,运算符有一个优先顺序。来自 the docs您可以看到 && 出现在 || 之前,所以从技术上讲,Resharper 是正确的,那些括号是多余的。

话虽如此,如果您觉得保留它们更明显 - 然后保留它们。代码的可读性应始终是优先事项。

关于c# - ReSharper 并删除多余的括号。 C# 中的 OR 与 AND 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42941250/

相关文章:

c# - Resharper 的 "Type argument is redundant"和断言存在问题

c# - 枚举有什么意义?

c# - 如何重新设计 ReSharper 8 生成的代码的样式

visual-studio - 配置 resharper 导航 (ctrl + T)

c# - AutoMapper:创建包含类的 map

c# - 代码契约与不使用它的框架一起

resharper - 让 ReSharper 和 VS 2015 CTP3 完美配合

c# - 模拟 IDataReader 扩展方法

c# - LocalSessionFactoryObject - 映射资源 - hbm 文件的路径

c# - 如何获取最后插入的 ID 以更新表中的同一行?