c#에서 값형식(value types) 타입은 null값을 넣을 수 없고, 참조형식(reference types)타입은 null 값을 넣을 수 있다는것을 아시나요?
(값형식, 참조형식을 모르시는 분은 해당 포스팅 참조)
1. 값형식과 참조형식에 null값 할당
정말 그런지 한번 확인해보겠습니다.
아래 예시는 참조형식 타입중 하나인 string입니다.
![[c#] null값 다루기(nullable type, ?, ??) - 1. 값형식과 참조형식에 null값 할당 [c#] null값 다루기(nullable type, ?, ??) - 1. 값형식과 참조형식에 null값 할당](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
참조 형식이기 때문에 이상없이 null값이 할당이 됩니다.
반면 값형식 타입중 하나인 int의 경우 null 값을 할당하면 아래와 같은 에러가 발생합니다.
![[c#] null값 다루기(nullable type, ?, ??) - 1. 값형식과 참조형식에 null값 할당 [c#] null값 다루기(nullable type, ?, ??) - 1. 값형식과 참조형식에 null값 할당](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
2. 값형식에 null값 가능하게 하기
그렇다면 값형식인 데이터타입에게 null을 넣을 수 있도록 하는 방법은 없을까요?
nullable 타입으로 변경해주면 됩니다.
nullable이란 한국어로 번역하자면 null이 가능한 타입이라는거죠.
방법으로는 해당 타입뒤에 ?(물음표)를 붙혀줍니다.
![[c#] null값 다루기(nullable type, ?, ??) - 2. 값형식에 null값 가능하게 하기 [c#] null값 다루기(nullable type, ?, ??) - 2. 값형식에 null값 가능하게 하기](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
예전에는 아래와 같은 방식으로도 썼으나 ?를 사용하는 방식을 추천드립니다.
![[c#] null값 다루기(nullable type, ?, ??) - 2. 값형식에 null값 가능하게 하기 [c#] null값 다루기(nullable type, ?, ??) - 2. 값형식에 null값 가능하게 하기](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
3. ?? 연산자(Null Coalescing Operator) 사용법
??연산자는 해당 데이터가 null값인지 확인하고 null 값일 경우 특정값을 대신 리턴할때 사용하는 연산자 입니다.
무슨말인지 잘 모르시겠죠?
코드를 통해 확인해보겠습니다.
![[c#] null값 다루기(nullable type, ?, ??) - 3. ?? 연산자(Null Coalescing Operator) 사용법 [c#] null값 다루기(nullable type, ?, ??) - 3. ?? 연산자(Null Coalescing Operator) 사용법](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
둘다 해당 값이 null일 경우 특정 값을 출력하는 코드입니다.
왼쪽은 if 조건절을 이용한 코드이고 오른쪽은 ??연산자를 이용한 방법입니다.
?? 뒷부분이 nullValue가 null일경우 리턴할 값을 넣는 부분입니다.
오른쪽 코드가 훨씬 깔끔한걸 알 수있죠?
만약 아래와 같이 null 이 아닐 경우에는 ?? 뒤에 값이 아닌 해당값을 그대로 반환합니다.
![[c#] null값 다루기(nullable type, ?, ??) - 3. ?? 연산자(Null Coalescing Operator) 사용법 [c#] null값 다루기(nullable type, ?, ??) - 3. ?? 연산자(Null Coalescing Operator) 사용법](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
Output:
![[c#] null값 다루기(nullable type, ?, ??) - 3. ?? 연산자(Null Coalescing Operator) 사용법 [c#] null값 다루기(nullable type, ?, ??) - 3. ?? 연산자(Null Coalescing Operator) 사용법](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
이 글과 읽으면 좋은글
'c#' 카테고리의 다른 글
[c#] 다형성(polymorphism) 이란? | 왜 사용하는가? + 오버라이딩 (1) | 2022.05.20 |
---|---|
[c#] 클래스 상속 | 오버라이딩 3가지 방법 | sealed (0) | 2022.05.20 |
[c#] 생성자 오버로딩 개념 정리( + 다른 생성자 호출) (0) | 2022.05.19 |
[c#] visual studio 괄호 색깔이 검정으로 바뀌는 에러? (0) | 2022.05.19 |
[c#] 박싱(boxing), 언박싱(unboxing) 개념과 사용 이유 (1) | 2022.05.18 |
댓글
꼬예님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.