# ??(null 병합 연산자)란?

??연산자는 'null 병합 연산자'라고도 한다.

이 연산자의 정의는 아래와 같다.

  • 왼쪽 피연산자의 값이 null이 아닐 경우: 왼쪽 피연산자를 리턴.
  • 왼쪽 피연산자의 값이 null인 경우: 오른쪽 피연산자를 리턴.

위 예시에서 첫번째 줄은 단순히 op라는 string 변수에 null로 초기화 해 두었다.

실질적인 ??연산자 사용은 두번째 줄이다.

따라서 첫번째 줄은 무시하고 두번째 줄에서 op라는 피연산자의 값은 아래와 같다.

- null이 아니면 -> str = op;

- null이면 -> str = "not setting";

따라서 op = null이므로 str = "not setting"이 된다.


??연산자는 피연산자의 타입이 null을 허용하면 사용 가능하다.

따라서 string, 클래스 타입은 물론 Nullable 타입에서도 사용할 수 있다. [C#문법] Nullable Type


# ??연산자 사용 예제

아래의 예제는 ??연산자를 사용한 2가지 예시를 Test1(), Test2()로 나타내었다.

* 출력 결과)

Hello

Not setting

World

-----------------

10

-1

20


* 예제 설명)

Test1(), Test2() 2가지 예시를 나타내었다.


1) Test1메소드에 대한 설명(null값이 가능한 string변수 사용)

- operand라는 string 타입의 배열에 "Hello", null, "World"를 담았다. (Line: 13)

- foreach문을 사용하여 operand 배열을 순차적으로 열거. (Line: 15)

- operand[0] : null이 아니므로 result = item; (Hello) (Line: 17)

- operand[1] : null이므로 result = "Not setting"; (Line: 17)

- operand[2] : null이 아니므로 result = item; (World) (Line: 17)


2) Test2메소드에 대한 설명(null값을 담을 수 있는 Nullable int변수 사용)

- operand라는 Nullable int타입의 배열에 10, null, 20을 담았다. (Line: 23)

- foreach문을 사용하여 operand 배열을 순차적으로 열거. (Line: 26)

- operand[0] : null이 아니므로 result = item; (10) (Line: 28)

- operand[1] : null이므로 result = -1; (Line: 28)

- operand[2] : null이 아니므로 result = item; (20) (Line: 28)


'Programming > C#' 카테고리의 다른 글

[C#공부] Thread  (0) 2018.07.18
[C#공부] Nullable Type  (0) 2018.01.06
[C#공부] var 키워드  (0) 2018.01.06
[C#공부] 배열/Collection을 이용한 foreach문 사용  (0) 2018.01.06
[C#공부] as와 is 연산자  (0) 2018.01.06

BELATED ARTICLES

more