티스토리 뷰
?? 연산자
이 연산자는 삼항연산자와 비슷하다.
삼항연산자보다 더 간편하다.
연산자의 역할은 ??를 기준으로 앞에 식(초록색 영역)이 null인지 체크 후
null이면 ?? 문자 뒤(우측)에 있는 동작2를 수행, null이 아니면 앞(좌측)에 있는 동작1을 수행한다.
동작1과 동작2의 null 체크 타입이 동일해야 한다.
동작1 체크 타입 | 동작2 체크 타입 | 컴파일 성공 여부 |
string | int | X |
string | string | O |
object | object | O |
string outText = text + (new MyObject() ?? new MyObject()) + "!"; // 컴파일 성공
string outText = text + (NotNullText ?? new MyObject()) + "!"; // 체크 타입 불일치, 컴파일 실패
변수 NotNullText가 null인 경우 동작2
를 수행하여 outText 값이 This is Null Text
가 출력된다.
반대로 변수 NotNullText가 null이 아닌 경우 동작1
을 수행하여 outText값이 This is Not Null Text
가 출력된다.
삼항연산자처럼 식을 boolean 타입으로 계산하려는 경우 컴파일 오류가 발생한다. (null or not null만 체크한다)
댓글