Favicon

Null coalescing operators

Peponi12/26/20243m

C#
SyntaxOperator????=

1. Introduction

Null 병합 연산자 (??), null 병합 대입 연산자 (??=)는 다음과 같은 특징을 가지고 있다.

  • 왼쪽 피연산자로 변수, 프로퍼티, 인덱서가 허용된다.
  • 왼쪽 피연산자의 형식은 null을 허용해야 한다.
  • 왼쪽 피연산자가 null일 때 오른쪽 피연산자를 확인한다.

??, ??= 연산자는 오른쪽에서부터 왼쪽으로 연산을 수행한다.

A ?? B ?? C
A ??= B ??= C
 
// 상기 두 식은 아래의 연산을 수행한다.
 
A ?? (B ?? C)
A ??= (B ??= C)

2. Null 병합 연산자

Null 병합 연산자 (??) 는 왼쪽 피연산자의 값이 null이 아닐 경우 왼쪽 피연산자의 값을 반환하며 null인 경우 오른쪽 피연산자의 값을 확인한다.

bool? X = null;
Console.WriteLine(X ?? true);
 
X = false;
Console.WriteLine(X ?? true);
 
X = null;
Console.WriteLine(X ?? throw new Exception("Null detected"));
 
/* output:
True
False
Unhandled exception. System.Exception: Null detected
*/

3. Null 병합 대입 연산자

Null 병합 대입 연산자 (??=) 는 왼쪽 피연산자의 값이 null이 아닐 경우 왼쪽 피연산자의 값을 반환하며 null인 경우 오른쪽 피연산자의 값을 할당 후 반환한다.

bool? X = null;
Console.WriteLine(X ??= true);
 
X = true;
Console.WriteLine(X ??= false);
 
X = null;
Console.WriteLine(X.GetValueOrDefault());
 
/* output:
True
True
False
*/

TIP

Nullable 형식의 값이 null일 때 반환할 값이 non-null 형식의 기본 값이어야 하는 경우 Nullable<T>.GetValueOrDefault 메서드를 활용할 수 있다.

4. 참조 자료