https://www.youtube.com/watch?v=yj-mCQv8C94&list=PLO56HZSjrPTB4NxAsEP8HRk6YKBDLbp7m&index=49
> int i = 0; // 값형(Value Type)
> string s = null; // 참조형(Reference Type)
> s = "안녕하세요.";
> string empty = ""; // 빈값(Empty)은 null과는 다름
> Nummable<bool> bln = null;
> bln.HasValue
false
> bln = true;
> bln.HasValue
true
> string nullValue = null;
> string message = "";
>
> //[1] if 구문으로 null 값 비교
> if(nullValue == null)
. {
. message = "[1] null이면 새로운 값으로 초기화 합니다.";
. }
> message;
"[1] null이면 새로운 값으로 초기화 합니다."
>
> //[2] ?? 연산자로 null 값 비교
> message = nullValue ?? "[2] null이면 새로운 값으로 초기화합니다.";
> message
"[2] null이면 새로운 값으로 초기화합니다."
> nullValue = "hello";
> message = nullValue ?? "[2] null이면 새로운 값으로 초기화합니다.";
> message
"hello"
> int? x = null;
> int y = x ?? 100;
> int z = x ?? default(int);
> int z = x ?? default;
> double? d = null;
> d
null
> d?.ToString(); // 만약에 d가 null 값이 아니면 문자열 변환해서 출력하라
null
> d = 1.0
> d?.ToString();
"1"
> d?.ToString("#.00");
"1.00"
> int num;
> List<string> list;
> // [1] 컬렉션 리스트가 null이면 Count를 읽을 수 없기에 0으로 초기화
> list = null;
> num = list?.Count ?? 0; // null이면 0반환, 오른쪽 값 사용
> num
0
> // [2] 컬렉션 리스트가 null이 아니면 Count 속성의 값 사용
> list = new List<string>();
> list.Add("see you again)
> num = list?.Count ?? 0; // null이 아니기 때문에 왼쪽 값 사용
> num
13