프로그래밍/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인 경우 다른 값을 반환할 수 있습니다.