VB.NET의 특이한 연산자 ?. 이게 뭐지?

2023. 9. 2. 13:55VB.NET/기초강좌

여태 몰랐는데 정말 특이한 연산자를 하나 발견했다.

 

?. -  물음표와 점이 하나의 연산자라고 생각해야 할 듯 하다.

 

한마디로 설명하면 "Null 조건부 연산자" 란다. 이게 도대체 뭔뜻일까? 간략히 예제를 하나 들어보자. 아래처럼 간단히 문자열 리스트를 정의했다고 가정해보자.

Dim lpList As List(Of String)

여기서 lpList는 단순 정의만 했을때는 Nothing 상태이다. 이 상태에서 lpList.Count 와 같은 문장을 실행하면 아래와 같은 오류 메시지가 발생하게 된다.

변수에 값을 할당하지 않으면 발생하는 오류

우리는 이 문제점을 잘 알고 있다. 그래서 항상 아래와 같이 오류가 발생하지 않도록 미리 확인후 처리하는게 어느정도 몸에 배어 있을 것이다.

If lpList IsNot Nothing Then
   If lpList.Count > 0 Then
      ... 처리구문
   End If
End If

보통 이런 식으로 값이 Nothing 아닌 경우에만 변수를 사용하도록 설정했는데 이 구문을 ?. 연산자를 이용하면 아래처럼 바꿀 수 있다.

If lpList?.Count > 0 Then
   ... 처리구문
End If

황당~ 이게 된다. 이런건 정말 처음 보네. 못믿겠으면 직접 해보시라. 한마디로 lpList에 값이 할당되어 있으면 실행하고, Nothing 상태면 건너뛰라는 의미이다. 신기하다.

 

이번 글은 정말 우연찮은 기회로 희한한 연산자를 알게 되서 잠깐 끄적여봤다. 개발자의 세계는 정말 멀고도 험하구나.

반응형