c#에서 값형식(value types) 타입은 null값을 넣을 수 없고, 참조형식(reference types)타입은 null 값을 넣을 수 있다는것을 아시나요?
(값형식, 참조형식을 모르시는 분은 해당 포스팅 참조)
1. 값형식과 참조형식에 null값 할당
정말 그런지 한번 확인해보겠습니다.
아래 예시는 참조형식 타입중 하나인 string입니다.
참조 형식이기 때문에 이상없이 null값이 할당이 됩니다.
반면 값형식 타입중 하나인 int의 경우 null 값을 할당하면 아래와 같은 에러가 발생합니다.
2. 값형식에 null값 가능하게 하기
그렇다면 값형식인 데이터타입에게 null을 넣을 수 있도록 하는 방법은 없을까요?
nullable 타입으로 변경해주면 됩니다.
nullable이란 한국어로 번역하자면 null이 가능한 타입이라는거죠.
방법으로는 해당 타입뒤에 ?(물음표)를 붙혀줍니다.
예전에는 아래와 같은 방식으로도 썼으나 ?를 사용하는 방식을 추천드립니다.
3. ?? 연산자(Null Coalescing Operator) 사용법
??연산자는 해당 데이터가 null값인지 확인하고 null 값일 경우 특정값을 대신 리턴할때 사용하는 연산자 입니다.
무슨말인지 잘 모르시겠죠?
코드를 통해 확인해보겠습니다.
둘다 해당 값이 null일 경우 특정 값을 출력하는 코드입니다.
왼쪽은 if 조건절을 이용한 코드이고 오른쪽은 ??연산자를 이용한 방법입니다.
?? 뒷부분이 nullValue가 null일경우 리턴할 값을 넣는 부분입니다.
오른쪽 코드가 훨씬 깔끔한걸 알 수있죠?
만약 아래와 같이 null 이 아닐 경우에는 ?? 뒤에 값이 아닌 해당값을 그대로 반환합니다.
Output:
이 글과 읽으면 좋은글
'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 |
댓글