2017-03-22 1 views
4

최근에 ReSharper (2016.3)가 의도 한 동작을 변경하게하는 C# 문에 중복 된 괄호를 제거하려고한다는 것을 알았습니다. 이 성명서는 다음과 같습니다 :여분의 괄호를 제거하고 제거하십시오. OR vs AND logic in 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 ; 
} 

아마도 전 C#은 SQL 서버 같은 비교 평가 OR 절 어떻게 잘못입니다 만, 또는 단지의 왼쪽에 그냥 그것의 오른쪽이나 실제로 사전 않는 식을 평가하지 않습니다 OR 조건을 평가하기 전에 모든 AND 조건을 연결해야합니까?

+0

ReSharper 옵션에서 사용자 정의 할 수 있습니다. – MickyD

답변

6

C#에는 연산자에 우선 순위가 있습니다. the docs에서 &&|| 앞에 오도록 기술적으로 Resharper가 올바른지 확인하면 해당 괄호가 중복됩니다.

그런 말을하고 나면, 그 코드를 그대로 두는 것이 더 분명합니다. 코드를 읽을 수 있는지 여부는 항상 우선 순위에 있어야합니다.

관련 문제