Section 3.5: 단락 평가 (Short-circuiting) 연산자
정의상으로 볼 때, 단락 평가 (short-circuiting) boolean 연산자는 첫번째 연산자가 전체 표현식 (expression) 의 결과를 결정지을 수 없는 경우에만 두번째 연산자의 실제 평가가 이루어지게 (evaluate) 된다.
다시말하면, 사용자가 &&
연산자를 firstCondition && secondCondition
의 형태로 사용했다고 할 때, secondCondition
은 firstCondition
가 true
인 경우에만 실제 평가가 이루어 지게 되며, 당연하게도 firstOperand
와 secondOperand
가 모두 true
로 평가될때만 전체 결과 역시 true
가 됨을 의미한다. 이는 여러 상황에서 유용하게 사용될 수 있는데, 예를 들어 list
가 세개 이상의 요소 (element) 를 가지고 있는지를 확인하여야 하는 상황에서, NullReferenceException
이 발생하는 상황을 피하기 위해 list
자체가 초기화가 되었는지도 확인이 필요한 상황을 가정해 보자. 이러한 경우, 아래와 같은 방법을 사용할 수 있다:
bool hasMoreThanThreeElements = myList != null && mList.Count > 3;
mList.Count > 3
조건 확인은 myList != null
조건이 만족하기 전까지는 수행되지 않을 것이다.
논리 AND 연산
&&
는 일반적인 boolean AND (&) 연산에 대응되는 단락 평가 (short-circuiting) 연산자이다.
var x = true;
var y = false;
x && x // true 를 반환한다.
x && y // false 를 반환한다 (y 값이 평가된다).
y && x // false 를 반환한다 (x 값이 평가되지 않는다).
y && y // false 를 반환한다 (오른쪽 y 값은 평가되지 않는다).
Logical OR
||
는 일반적인 boolean OR (|) 연산에 대응되는 단락 평가 (short-circuiting) 연산자이다.
var x = true;
var y = false;
x || x // true 를 반환한다 (오른쪽 x 값은 평가되지 않는다).
x || y // true 를 반환한다 (y 값이 평가되지 않는다).
y || x // true 를 반환한다 (x 와 y 값이 평가된다).
y || y // false 를 반환한다 (두 y 값이 모두 평가된다).
사용 예제
if(object != null && object.Property)
// object 가 null 인 경우 단락 평가 (short circuit) 로 인해 object.Property 는 절대 사용(access) 되지 않는다.
Action1();
else
Action2();
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
'번역 > C# Notes for Professionals' 카테고리의 다른 글
3.7: ?. (Null 조건부 연산자) (0) | 2020.11.03 |
---|---|
3.6: ? : 삼항 연산자 (0) | 2020.11.02 |
3.4: 묵시적 캐스팅 연산자와 명시적 캐스팅 연산자 (0) | 2020.10.27 |
3.3: 관계 연산자 (Relational Operator) 들 (0) | 2020.10.26 |
3.2: 동등 (equality) 연산자 재정의하기 (0) | 2020.10.22 |