?? 연산자(C# 참조)

?? 연산자는 null 병합 연산자라고 합니다. 이 연산자는 피연산자가 null이 아닐 경우 왼쪽 피연산자를 반환하고 null일 경우 오른쪽 피연산자를 반환합니다.

설명

nullable 형식은 형식 도메인의 값을 나타낼 수 있거나 값을 정의하지 않을 수 있습니다(이 경우 값은 null). 왼쪽 연산자에 값이 null인 null 허용 형식이 있는 경우 ?? 연산자의 구문 표현을 사용하여 적절한 값을 반환할 수 있습니다(오른쪽 피연산자). ?? 연산자를 사용하지 않고 nullable 값 형식을 nullable이 아닌 값 형식에 할당하려고 하면 컴파일 타임 오류가 발생합니다. 캐스트를 사용할 때 nullable 값 형식이 현재 정의되어 있지 않으면 InvalidOperationException 예외가 throw됩니다.

자세한 내용은 Null 허용 형식을 참조하세요.

?? 연산자의 결과는 해당 두 인수가 모두 상수인 경우에도 상수로 간주되지 않습니다.

예제

class NullCoalesce
{
    static int? GetNullableInt()
    {
        return null;
    }

    static string GetStringValue()
    {
        return null;
    }

    static void Main()
    {
        int? x = null;

        // Set y to the value of x if x is NOT null; otherwise,
        // if x == null, set y to -1.
        int y = x ?? -1;

        // Assign i to return value of the method if the method's result
        // is NOT null; otherwise, if the result is null, set i to the
        // default value of int.
        int i = GetNullableInt() ?? default(int);

        string s = GetStringValue();
        // Display the value of s if s is NOT null; otherwise, 
        // display the string "Unspecified".
        Console.WriteLine(s ?? "Unspecified");
    }
}

참고 항목

C# 참조
C# 프로그래밍 가이드
C# 연산자
Nullable 형식
What Exactly Does ‘Lifted’ mean?(‘리프트’란 정확히 어떤 의미인가요?)