본문 바로가기

C# 문법

[C#] 널 조건부 연산자 / 널 연산자

널 조건부 연산자(Null-donditional Operator)

  • null 조건부 연산자는 피연산자가 null이 아닌 것으로 평가되었을 때만 맴버액세스 ?. 연산을 피연산자에 적용하며, 그렇지 않으면 null을 반환합니다.

a가 null로 평가되면 a?.x의 결과는 null 입니다

a가 null이 아닌 것으로 평가되면 a?.x의 결과는 a.x와 같습니다.

?. 사용 방법

public void Run()
{
    //입력된 str값이 널이 아닐경우, str.string()값을 리턴 null일경우 null을 리턴
    Func<string, string> checkNullString = delegate (string str)
    { return str?.ToString(); };

    Console.WriteLine(checkNullString(null));
    Console.WriteLine(checkNullString("양뱅!"));
}

결과


양뱅!

널 병합 연산자(Null-coalescing operator) c# 8.0 이상

null 병합 연산자 ??null이 아닌 경우 왼쪽 피연산자의 값을 반환합니다.

??=는 왼쪽 피연산자가 null로 계산되는 경우에만 오른쪽 피연산자의 값을 왼쪽 피연산자에 대입합니다.

?? 사용 방법

public void Run()
{
    //입력된 str값이 널이 아닐 경우, str값을 리턴, null 이면 Null Value 라는 내용 리턴
    Func<string, string> checkNullString = delegate (string str)
    { return str ?? "Null Value"; };

    Console.WriteLine(checkNullString(null));
    Console.WriteLine(checkNullString("양뱅!"));        
}

??= 사용 방법

public void Run()
{
    //입력된 str값이 널이 아닐 경우, str값을 reValue 에 저장
    // null 이면 reValue 에 Null Value 라는 내용을 저장
    Func<string, string> checkNullString = delegate (string str)
    {
        string reValue = str ??= "Null Value";
        return reValue;
    };

    Console.WriteLine(checkNullString(null));
    Console.WriteLine(checkNullString("양뱅!"));        
}

결과

Null Value
양뱅!