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

C# 물음표 두 개(??) 연산자란? 널 병합 연산자 완벽 정리

C#에서 ??널 병합 연산자(Null-Coalescing Operator)입니다. 이 연산자는 왼쪽 피연산자가 null이 아니면 그 값을 그대로 반환하고, null이라면 오른쪽 피연산자를 평가한 결과를 반환합니다. 특히 왼쪽 피연산자가 null이 아닌 경우에는 오른쪽 피연산자 자체를 평가하지 않기 때문에 불필요한 연산을 줄여줍니다.

널 병합 연산자가 필요한 이유

nullable 타입은 값이 정의되지 않은 상태(null)이거나 해당 타입의 유효한 값을 가질 수 있는 타입입니다. 왼쪽 피연산자가 nullable 타입일 때, ?? 연산자를 사용하면 적절한 기본값을 반환할 수 있습니다.

만약 ?? 연산자 없이 nullable 값 타입을 non-nullable 값 타입에 직접 할당하려고 하면 컴파일 타임 에러가 발생합니다. 또한 강제로 캐스팅을 시도하면 런타임에 InvalidOperationException 예외가 발생할 수 있습니다.

널 병합 연산자(??)의 장점

  • nullable 항목(값 타입과 참조 타입 모두)에 대한 기본값을 간결하게 정의할 수 있습니다.
  • 런타임 InvalidOperationException 예외 발생을 방지합니다.
  • 반복적인 if 조건문을 제거하여 코드를 단순화합니다.
  • 참조 타입과 값 타입 모두에서 사용 가능합니다.
  • 코드가 체계적으로 정리되어 가독성이 크게 향상됩니다.

사용 예제

using System;
namespace MyApplication{
    class Program{
        static void Main(string[] args){
            int? value1 = null;
            int value2 = value1 ?? 99;
            Console.WriteLine("Value2: " + value2);
            string testString = "Null Coalescing";
            string resultString = testString ?? "Original string is null";
            Console.WriteLine("The value of result message is: " + resultString);
        }
    }
}

실행 결과

위 예제 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

Value2: 99
The value of result message is: Null Coalescing

첫 번째 예제에서 value1이 null이므로 ?? 연산자는 기본값인 99를 반환했습니다. 반면 두 번째 예제에서 testString은 null이 아니기 때문에 원래 문자열 값이 그대로 반환된 것을 볼 수 있습니다.