Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 널 병합 연산자(??) 완벽 가이드: 사용법과 예제 코드

C#의 널 병합 연산자(null coalescing operator, ??)는 nullable 값 형식과 참조 형식에서 사용되는 연산자입니다. 이 연산자는 암시적 변환이 가능한 경우, 한 피연산자를 다른 nullable(또는 non-nullable) 값 형식 피연산자의 타입으로 변환하는 데 활용됩니다.

널 병합 연산자의 동작 원리

널 병합 연산자의 동작 방식은 매우 직관적입니다.

  • 첫 번째 피연산자의 값이 null이면 → 두 번째 피연산자의 값을 반환합니다.
  • 첫 번째 피연산자의 값이 null이 아니면 → 첫 번째 피연산자의 값을 그대로 반환합니다.

즉, null일 가능성이 있는 변수에 기본값(default value)을 손쉽게 지정할 수 있어, if 문이나 삼항 연산자를 사용하는 것보다 코드를 훨씬 간결하게 만들어 줍니다.

예제 코드

다음은 널 병합 연산자의 기본적인 사용 예제입니다.

using System;

namespace Demo {

    class Program {

        static void Main(string[] args) {
            double? num1 = null;
            double? num2 = 6.32123;
            double num3;

            // num1이 null이므로 기본값 9.77이 할당됨
            num3 = num1 ?? 9.77;
            Console.WriteLine(" Value of num3: {0}", num3);

            // num2가 null이 아니므로 num2의 값이 그대로 할당됨
            num3 = num2 ?? 9.77;
            Console.WriteLine(" Value of num3: {0}", num3);
            Console.ReadLine();
        }
    }
}

실행 결과

Value of num3: 9.77
Value of num3: 6.32123

결과 분석

위 예제에서 num1null로 초기화되었기 때문에 num1 ?? 9.77 표현식은 오른쪽의 기본값인 9.77을 반환합니다. 반면 num2에는 실제 값 6.32123이 저장되어 있으므로, num2 ?? 9.77num2의 값을 그대로 반환합니다.

추가 팁: 널 병합 할당 연산자(??=)

C# 8.0부터는 널 병합 할당 연산자(??=)도 사용할 수 있습니다. 이 연산자는 변수가 null일 때만 오른쪽 값을 할당하므로, 더욱 간결한 코드 작성이 가능합니다.

string name = null;
name ??= "기본 이름"; // name이 null이므로 "기본 이름"이 할당됨
Console.WriteLine(name); // 출력: 기본 이름

널 병합 연산자를 적절히 활용하면 null 처리 로직을 한 줄로 정리할 수 있어 코드의 가독성과 안정성이 크게 향상됩니다.