C#교과서 마스터하기 19. Null

https://www.youtube.com/watch?v=yj-mCQv8C94&list=PLO56HZSjrPTB4NxAsEP8HRk6YKBDLbp7m&index=49

1. Null

  • 아무것도 없음을 의미하는 리터럴, 개체가 아무것도 참조하지 않음을 null 참조라 함
  • 아무것도 가리키지 않는다

2. Null과 Null 참조

3. null 참조

> int i = 0; // 값형(Value Type)
> string s = null; // 참조형(Reference Type)
> s = "안녕하세요.";
> string empty = ""; // 빈값(Empty)은 null과는 다름

4. Nullable<T> 구조체를 사용하여 널 가능 형식 변수 만들기

  • Nullable 형식 : null(값이 없음을 의미)이 할당될 수 있는 형식
  • 참조 형식 : null 할당 가능
  • 값 형식 : null 할당 불가
    • 하지만 type? 이렇게 선언하면 null 대입 가능
      • int? num = null;
> Nummable<bool> bln = null;
> bln.HasValue
false
> bln = true;
> bln.HasValue
true

5. ?? 연산자(null 병합 연산자(Null Coalescing Operator))

> 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;

6. ?.(엘비스) null 조건 연산자(Null Conditional)

> double? d = null;
> d
null
> d?.ToString(); // 만약에 d가 null 값이 아니면 문자열 변환해서 출력하라
null
> d = 1.0
> d?.ToString();
"1"
> d?.ToString("#.00");
"1.00"

7. ??(널 병합 연산자) & ?.(널 조건 연산자) 함께 사용해보기

  • ??, 컬렉션이 null이 아니면 해당 값 반환, null이면 뒤에 지정한 값 반환
  • ?., 컬렉션이 null이면 null, 그렇지 않으면 뒤에 오는 속성 값 반환
> 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

좋은 웹페이지 즐겨찾기