프로그래밍/C#

[C#] Null 조건 부 연산자

NIA1995 2020. 12. 26. 23:21

Null 조건부 연산자는 피연산자가 null이 아닌 것으로 평가되었을 때만 멤버와 요소에 접근하여 연산을 적용하고, 그렇지 않은 경우 null을 반환하는 문법입니다.

 

1. A가 null로 평가되면 A?.x 또는 A?[x]의 결과는 null입니다.

2. A가 null이 아닌 것으로 평가되면 A?.x 또는 A?[x]의 결과는 각각 a.x , a[x]의 결과와 같습니다.

 

Null 조건부 연산자는 단락 연산자로써, 조건부 멤버나 요소 접근 작업의 연결된 작업에서 null을 반환하면 나머지 작업은 실행하지 않습니다.

 

A?.B?.Do(C);
A?.B?[C];

 

위와 같은 경우에서 A가 null인 경우, B를 평가하지 않고 null을 반환, A 또는 B가 null일 경우 C를 평가하지 않고 null을 반환합니다.

 

double SumNumbers(List<double[]> setsOfNumbers, int indexOfSetToSum)
{
    return setsOfNumbers?[indexOfSetToSum]?.Sum() ?? double.NaN;
}

var sum1 = SumNumbers(null, 0);
Console.WriteLine(sum1);  // output: NaN

var numberSets = new List<double[]>
{
    new[] { 1.0, 2.0, 3.0 },
    null
};

var sum2 = SumNumbers(numberSets, 0);
Console.WriteLine(sum2);  // output: 6

var sum3 = SumNumbers(numberSets, 1);
Console.WriteLine(sum3);  // output: NaN

 

또한 위의 예제처럼 null 병합 연산자 ??를 사용해서 null 조건부 연산 결과가 null인 경우 다른 값을 반환할 수 있습니다.