null 조건부 연산자와 null 병합 연산자 함께 사용하기
?.와 ?? 연산자를 함께 사용하는 예제도 살펴보겠습니다. 다음 내용을 입력한 후 실행해 보세요. ?? 연산자는 컬렉션이 null이 아니면 해당 값을 반환합니다. null이면 뒤에 지정한 값을 반환합니다.
> int num; > List<string> list; > > //① 컬렉션 리스트가 null이면 Count를 읽을 수 없기에 0으로 초기화 > list = null; > num = list?.Count ?? 0; //null이면 0 반환, 오른쪽 값 사용 > num 0 > > //② 컬렉션 리스트가 null이 아니면 Count 속성 값을 사용 > list = new List<string>(); list.Add("또 만나요."); > num = list?.Count ?? 0; //null이 아니기에 왼쪽 값 사용 > num 1
?. 연산자의 결괏값이 null이면 null 대신에 ?? 연산자를 사용하여 새로운 값으로 초기화할 수 있습니다. null 관련 연산자 2개를 함께 사용하는 list?.Count ?? 0 형태의 코드는 앞으로 자주 보게 될 것입니다. 조금 복잡해 보여도 사용법을 확실히 익혀 두면 좋습니다.
C# 프로그래밍에서 가장 많은 에러를 발생시키는 부분이 바로 널(null) 관련 에러입니다. 특정 개체가 참조되지 않은 상태로 사용되면 반드시 에러가 발생됩니다. 이러한 null 관련 에러를 잡으려면 반드시 null 값이 아닌 실제 값으로 초기화하고, null 확인을 null 병합 연산자와 null 조건부 연산자를 사용하여 null 대신에 기본값 등으로 초기화하길 권장합니다. null 관련 연산자는 null 처리에서 if 문이 아닌 식을 사용하여 처리할 수 있도록 도움을 줍니다. 처음에는 어려울 수 있지만 이 두 가지 연산자를 많이 연습하여 사용법을 확실히 익힙니다.