[ C#. DataType-Nullable ]
1. Nullable 형식
int와 같은 값 형식은 기본적으로 null 값을 가질 수 없다.
하지만 DB와 연동을 하는 프로그램을 개발 하다 보면,
DB에서는 모든 형식에 null이 가능하다.
보통은 DB에서 쿼리를 작성할 경우 Microsoft SQL Server에서는
ISNull() 함수를 통하여 기본값을 지정하는 처리를 하였다.
C# 3.0 에서 이러한 불편함을 해소하고
DB와의 유연한 처리가 가능하도록 값형식에서도 null 값을 사용할 수 있게 되었다.
값 형식에 null이 가능하도록 하려면 해당 형식선언 다음에 ?를 붙여 주면 된다.
Nullable 형식은 내부적으로 System.Nullable<T> 구조체의 인스턴스로 HasValue와 Value 라는
두 개의 프로퍼티를 가지고 있다.
2. HasValue : 값이 null 이면 false, null이 아닌 값이면 true
Value : HasValue가 true 이면 가지고 있는 값을 반환하며,
HasValue가 false 일 경우 InvalidOperationException 예외가 발생한다.
Nullable 형식은 유연성은 확보 할 수 있으나,
널 형식을 허용하지 않은 명시적 선언 보다는 오버헤드가 발생하므로
꼭 필요한 경우에만 사용을 해야 한다.(DB와 연동하는 처리에는 유용할 것이다.)
3. ?? 연산자
설정된 데이터를 연산을 할 경우 null로 설정이 되어 있으면 올바른 사칙연산을 이루어 지지 않는다.
그러므로 DB의 IsNull() 함수와 같이 null 일 경우 기본값 설정이 필요하다.
C#에서 단일 행으로 조건식을 판단할 수 있는 ?: 연산지 이외에 특별히 ?? 연산자를 통해 쉽게 처리 가능하다.
4. 예)
- int? numA = null;
int numB = (numA == null) ? 0 : (int)numA)
int numC = numA ?? 0;
'C# > Data Type' 카테고리의 다른 글
C#. DataType (0) | 2018.02.02 |
---|