]
?. , ?[] 연산자는 Null이 아니라면 참조하고, Null이라면 Null로 처리 하라는 뜻이다.
A?.number의 경우에는 A가 Null이 아닐 경우 number에 접근하고 A가 Null일 경우 Null로 끝이다.
A?[number]의 경우에는 A가 Null이 아닐 경우에만 number번째 요소에 접근한다.
?? 연산자는 A ?? B에서 A가 Null이 아니라면 왼쪽의 A로, Null이라면 오른쪽 B로 처리하는 연산자 이다.
만약 A ?? B ?? C인 경우에는 먼저 (B ?? C)를 진행해서 B가 Null이 아니라면 C, B가 Null이라면 C로 한 뒤 A가 Null인지 체크하고 A가 Null이면 (B ?? C)결과를 아니면 A를 취한다.
덤으로 대입연산자 A??=B의 경우 A가 Null일 경우에만 A에 B를 대입한다.
참조:
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-
https://developstudy.tistory.com/69
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/null-coalescing-operator