null 병합 연산자
C# 6.0에는 물음표 두개를 연달아 쓰는 null 병합 연산자라는 것이 있다.
string s1 = null;
string s2 = s1 ?? "hell"; // s1이 null이 아닌 경우 s1을 대입, null인 경우 "hello"를 대입
조사하는 대상이 null이 아닌 경우, 그 값을 넣고, null인 경우 물음표 뒤의 값을 대입하라는 의미다.
null 병합 대입
C# 8.0 부터는 null 병합 대입이라는 것이 추가 되었다. 영어로는 "Null Coalescing Assignment"라고 한다. 위의 병합 연산자는 s1의 값을 다른 변수에 대입하는 것이었지만 null 병합 대입은 반대다. s1의 값이 null일 경우 s1에 다른 값을 대입하겠다는 의미다.
연산자는 ??= 를 사용한다.
string s1 = null;
s1 ??= "hello world"; // if(null == s1) s1 = "hello world"
위 예제에서 s1는 null이므로 병합 대입 연산 후에는 "hello world"값을 가지게 된다. 하지만 아래 처럼 s1이 null이 아닌 값을 가지고 있다면 병합 대입은 적용 되지 않고 s1은 원래의 값을 그대로 가지고 있는다.
string s1 = "hello";
s1 ??= "world";
Console.WriteLine(s1); // "hello"