물음표 연산자
// 아래 두 식 A, B는 동일하게 작동
// 식 A
MyClass ab = a ?? b;
// 식 B
MyClass ab = (a != null) ? a : b;
타입 뒤의 물음표 연산자
- 변수의 Boxing(참조 형식) 여부를 뜻함
- 쉽게 말하자면, nullable 여부를 뜻함
int i1=1; //ok
int i2=null; //not ok
int? i3=1; //ok
// int? 는, "boxed" 정수 값을 의미한다
// 참조형 정수 값이므로, nullable이다
int? i4=null; //ok
nullable type
Nullable<int> a; // int? a; 와 동일
- null 을 가질 수 없는 값 형식 타입을 null이 될 수 있도록 변환
- int 등과 같은 데이터 타입에 대해 값이 없음을 표현하고자 하는 의도
Nullable<int> a; // int? a; 와 동일
a = null;
Console.WriteLine(a); // null
Console.WriteLine(a.HasValue); // false
Console.WriteLine(a.Value); // throw an exception
Console.WriteLine(a.GetValueOrDefault()); // default value of int type
Nullable<int> b; // int? b; 와 동일
b = 10;
Console.WriteLine(b); // 10
Console.WriteLine(b.HasValue); // true
Console.WriteLine(b.Value); // 10
Console.WriteLine(b.GetValueOrDefault()); // 10
출처