C#에서 nullable 값 형식(Nullable<T>)은 값 형식에 null을 허용하여 코드의 유연성을 높입니다. 기본 사용법은 익숙하지만, 고급 기능을 활용하면 더욱 강력한 코드 작성이 가능합니다.
1. Nullable<T> 기본 이해
Nullable<T>는 T가 값 형식일 때 null 값을 가질 수 있도록 하는 구조체입니다. 구문상으로는 T?로 표현합니다.
int? num = null;
if (num.HasValue) {
Console.WriteLine(num.Value);
} else {
Console.WriteLine("값이 없습니다.");
}
2. Null 병합 연산자(??) 활용
Null 병합 연산자(??)는 nullable 형식이 null일 때 기본값을 지정할 때 유용합니다.
int? a = null;
int b = a ?? 10; // a가 null이면 10
Console.WriteLine(b);
3. Nullable.GetUnderlyingType() 메서드
리플렉션을 사용할 때 Nullable<T>의 기본 타입을 알아야 할 때 유용합니다.
Type type = typeof(int?);
Type underlyingType = Nullable.GetUnderlyingType(type);
Console.WriteLine(underlyingType); // System.Int32
4. Nullable<T>와 LINQ 사용법
nullable 값 형식을 LINQ 쿼리와 함께 활용하면, null 체크를 더 간결하게 할 수 있습니다.
int?[] scores = {90, null, 70, 85};
var validScores = scores.Where(s => s.HasValue).Select(s => s.Value);
foreach(var score in validScores) {
Console.WriteLine(score);
}
5. 사용자 정의 연산자 사용
Nullable<T>는 내부적으로 연산자를 오버로드하여, null 상태에서의 연산을 안전하게 지원합니다. 직접 오버로드는 불가능하지만, 이를 이해하면 null 안전 코드 작성에 도움이 됩니다.
이상으로 C# nullable 값 형식의 고급 사용법을 정리했습니다. Null 가능성 제어를 통해 안정적이고 깔끔한 코드를 작성하세요.
'C#' 카테고리의 다른 글
| C# 인터페이스의 기본 구현(Default Interface Implementation) 활용 (0) | 2026.05.23 |
|---|---|
| C# 디버깅 심화: Conditional Attribute와 DebuggerDisplay (0) | 2026.05.22 |
| C# Enumerator 커스터마이징과 상태 유지 (0) | 2026.05.21 |
| C# Custom SynchronizationContext 구현하기 (0) | 2026.05.21 |
| C# BigInteger를 활용한 대규모 숫자 연산 (0) | 2026.05.21 |