[Unity] ?. / ?? / ??= 연산자

연산자란?

연산자란 특정한 작업을 하기 위한 기호나 키워드를 의미합니다.

 

흔히들 사용하는 산술, 논비, 비교 연산자 등등 굉장히 많은 종류의 연산자가 존재합니다.

하지만 이번에 알아볼 연산자는 처음 보면 생소할 수 있는 연산자입니다.

 

 

?. (null 조건부 연산자)

 

?. 연산자는

● 왼쪽 피연산자가 null이면 null을 반환

● 왼쪽 피연산자가 null이 아니면 오른쪽 멤버를 실행

 

?. 연산자 예제

 

위의 예제와 같이 왼쪽의 값이 null일 때는 null이 반환되므로 TakeDamage()를 실행하지 않지만

Player 객체에게 값을 할당해 주고 다시 실행해보면 TakeDamage()가 실행되는 것을 볼 수 있습니다.

 

 

?? (널 병합 연산자)

 

?? 연산자는

● 왼쪽 피연산자가 null이면 오른쪽 피연산자를 반환 (대입 x)

● 왼쪽 피연산자가 null이 아니면 왼쪽 피연산자를 반환

 

?? 연산자 예제

 

여기서 주의해야 할 점은 왼쪽이 null일 경우 오른쪽의 값을 왼쪽에 대입해주는 것이 아니라

오른쪽의 값을 '반환' 하는 것입니다.

 

 

 

??= (null 병합 할당 연산자)

 

??= 연산자는

● 왼쪽 피연산자가 null이면 오른쪽 피연산자를 대입 및 반환

● 왼쪽 피연산자가 null이 아니면 왼쪽 피연산자를 그대로 반환

 

 

??= 연산자 예제

 

??= 연산자는 ?? 연산자와 다르게 왼쪽 피연산자가 오른쪽 피연산자의 값도 참조한다는 점이 다릅니다.

 

 

 

 

< 연산자 요약 >

  왼쪽 피연산자가 null일 때 왼쪽 피연산자가 null이 아닐 때
?. 연산자 null을 반환 오른쪽 멤버 실행
?? 연산자 오른쪽 피연산자 반환 왼쪽 피연산자 반환
??= 연산자 오른쪽 피연산자 대입 및 반환 왼쪽 피연산자 반환

 

위와 같은 연산자들을 상황에 맞게 잘 사용하면 코드가 간결해져 가독성이 향상되고 null 값을 안전하게 처리할 수 있습니다.