我最近注意到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条件之前?
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |