T
는 기본 값 형식( int,double 등 ) 을 나타낸다- Int? 는 Nullable
와 동일하다. - 레퍼런스 타입은(class) Nullable 을 쓸 필요가 없는데, 그것은 모든 레퍼런스 타입은 이미 Null 을 허용하기 때문이다.
- Null 상태를 체크할 수 있는 기능
HasValue
을 가지고 있다.
Nullable 상태체크 예제
namespace Nullable
{
internal class Program
{
static void Main(string[] args)
{
// 일반적인 값 형식 변수
// int regularInt = 10;
// Nullable 값 형식 변수
int? nullableInt = null;
// 값 형식에 null 을 할당할 수 없음
//int invalidInt = null;
if (nullableInt.HasValue) {
Console.WriteLine("NullableInt :" + nullableInt);
}else {
Console.WriteLine("NullableInt is null");
}
// 조건부 연산자(??) 를 사용해 간결하게 처리
int result = nullableInt ?? 5; // nullableInt 가 null 이라면 5 출력
Console.WriteLine("Result:" + result );
}
}
}
Nullable 정적 클래스
- Compare
: Nullable.Compare<T>
메서드는 두Nullable<T>
변수를 비교하고 결과를 반환합니다. 반환 값은a
가b
보다 작으면 음수, 같으면 0, 크면 양수입니다. ( -1,1) - Equals
: Nullable.Equals<T>
메서드는 두Nullable<T>
변수를 비교하여 값이 같은지 여부를 반환합니다. ( true, false)
[ 예제 코드 ]
namespace NullableStatic
{
internal class Program
{
static void Main(string[] args)
{
// Compare<T> 예제
NullableCompareExample();
// Equals<T> 예제
NullableEqualsExample();
}
static void NullableCompareExample()
{
int? a = null;
int? b = 0;
int result = Nullable.Compare<int>(a, b); // a 가 null 즉 b 보다 적으므로 -1 출력
Console.WriteLine(result);
}
static void NullableEqualsExample()
{
double? c = 0.01;
double? d = 0.0100;
bool result = Nullable.Equals<double>(c, d);
Console.WriteLine(result); // True : c 와 d 의 값은 수학적으로 같으므로 true
}
}
}
'Programming Language > C#' 카테고리의 다른 글
[C#] Delegate(대리자) (0) | 2023.12.27 |
---|---|
[C#] 메서드 파라미터 ( ref, out ) (0) | 2023.12.27 |
[C#] 네임스페이스 (0) | 2023.12.27 |
[C#] 예외처리(Exception) [ try, catch, finally ] (0) | 2023.12.27 |
[C#] yield 키워드 : 큰 데이터의 집합을 다룰 수 있다 (0) | 2023.12.27 |