C# Nullable 형식이란?
C#에서 Nullable(널 허용) 형식은 해당 데이터 형식이 가질 수 있는 일반적인 값 범위에 더해, null 값까지 할당할 수 있도록 지원하는 특수한 데이터 형식입니다.
예를 들어, Nullable<int> 변수에는 -2,147,483,648부터 2,147,483,647 사이의 정숫값뿐만 아니라 null도 저장할 수 있습니다. 마찬가지로 Nullable<bool> 변수에는 true, false, 그리고 null 세 가지 값을 모두 할당할 수 있습니다.
이러한 기능은 데이터베이스의 필드처럼 '값이 없음'을 표현해야 하는 상황에서 특히 유용합니다.
Nullable 형식 선언 문법
Nullable 형식은 데이터 형식 뒤에 물음표(?)를 붙여 간단하게 선언할 수 있습니다.
<data_type>? <variable_name> = null;
선언 예시는 다음과 같습니다.
int? num1 = null;
Nullable 형식 활용 예제
다음은 다양한 Nullable 형식을 선언하고 값을 출력하는 전체 예제 코드입니다.
예제 코드
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
int? num1 = null;
int? num2 = 45;
double? num3 = new double?();
double? num4 = 3.14157;
bool? boolval = new bool?();
// 값 출력
Console.WriteLine("Nullables at Show: {0}, {1}, {2}, {3}", num1, num2, num3, num4);
Console.WriteLine("A Nullable boolean value: {0}", boolval);
Console.ReadLine();
}
}
}실행 결과
Nullables at Show: , 45, , 3.14157 A Nullable boolean value:
실행 결과에서 확인할 수 있듯이, null로 초기화된 변수는 아무것도 출력되지 않고, 값이 할당된 변수(num2, num4)는 정상적으로 값이 출력됩니다.
Nullable 형식의 유용한 멤버와 연산자
Nullable 형식은 다음과 같은 속성과 연산자를 제공하여 null 값을 더욱 안전하게 다룰 수 있게 해줍니다.
- HasValue: 변수에 실제 값이 있는지 여부를
true/false로 반환합니다. - Value: 변수에 저장된 실제 값을 반환하며, 값이 없으면 예외가 발생합니다.
- GetValueOrDefault(): 값이 없으면 해당 형식의 기본값(예:
int의 경우 0)을 반환합니다.
또한 null 병합 연산자(??)를 사용하면 값이 null일 때 대체값을 간결하게 지정할 수 있습니다.
int? num = null; int result = num ?? 10; // num이 null이므로 result는 10
마무리
C#의 Nullable 형식은 값형(int, double, bool 등)에 null을 허용함으로써, 데이터가 존재하지 않는 상황을 명확하게 표현할 수 있게 해주는 강력한 기능입니다. HasValue, GetValueOrDefault(), ?? 연산자를 함께 활용하면 null 관련 오류를 예방하고 더 안전한 코드를 작성할 수 있습니다.