[ 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
Posted by 농부지기
,