[C#공부] ??연산자(null 병합 연산자)
# ??(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 |