본문 바로가기

C#

Nullable 연산자(?.)와 Null 병합 연산자(??)

반응형

공부할때는 어디에 쓸까 하다가도 은근히 유용한 null 관련 연산자들입니다.

반응형

Nullable (?.)

객체가 null인지 확인하며, null이 아닌 경우에만 해당 멤버에 접근합니다. 객체가 null이라면 예외를 발생시키지 않고 null을 반환해줍니다. 사용 문법은 아래와 같이 . 앞에 ?를 붙여서 사용하면 됩니다.

object?.Member

 

예제

class Person
{
    public string Name { get; set; }
    public int? Age { get; set; } // Nullable<int>
}

Person person = null;

// Nullable 연산자 사용
Console.WriteLine(person?.Name); // 출력: (null)

이러한 경우에서 person이 null일때 예외가 발생하지 않고 안전하게 실행이 가능합니다.

nullable을 지원하는 여러 객체에서 사용 가능합니다(ex. list?.Count 등)

 

Null 병합 연산자 (??)

왼쪽의 표현식의 null일 경우에 오른쪽의 값을 반환합니다.

expression1 ?? expression2

이러한 식이 있을때, expression1이 null이면 expression2를, null이 아니면 expression1을 반환합니다.

expression1 == null ? expression2 : expression1

이 식과 동일한 리턴을 갖는다고 보면 될것같습니다.


두 연산자를 같이 사용하면 좀더 편하고 간결한 코드를 적어낼 수 있습니다.

예를 들어, List<int> numbers가 존재하고, numbers 리스트의 길이를 count라는 변수에 할당하고 싶을때
1. numbers가 null이면 0을 반환하고
2. null이 아니라면 리스트의 길이를 반환하고 싶다면

아래와 같이 표현할 수 있게 됩니다.

int count = numbers?.Count ?? 0;

간단해서 좋습니다.

반응형

'C#' 카테고리의 다른 글

(C#) string to enum 변환  (0) 2024.07.11