2009년 8월 31일 월요일

[C#.NET]Nullable type 이란

일반적으로 데이타형중에서 숫자형은 NULL 값을 가질 수 없는게 보통이죠. 하지만 데이터 베이스에서는 NULL 값을 가질수 있습니다. 그래서 C#2.0 부터는 Nullable 이라는 좀 특이한 아이가 생겨났습니다.

 

Nullable<T>

 

Nullable형은 숫자형의 변수를 선언하고 그 숫자 변수뒤에 [?](물음표) 를 붙혀서 사용합니다. 이 기호를 붙임으로 해서 숫자형 임에도 불구하고 null 값을 대입받는 것이 가능해 집니다.

 

예를 들어 보면,

int? i = null;

 

이라고 적으면 i 라는 숫자형 변수는 null 값을 대입 받을 수 있는것입니다.

 

이제 Nullable에 대해서 좀 알았으니 자세하게 파고 들어가 볼까요?

 

Nullable<T> 의 생성자를 먼저 알아보죠

 

public Nullable(T value);

 

라고 정의되어 있습니다. value는 Nullable<T> 가 나타내고 싶은 자료형을 지정합니다.

 

다음으로 Nullable형의 맴버들을 알아보겠습니다.

 

// Nullable Type 이 가지고 있는 value 값을 보여주는 프로퍼티

public T Value {get;}

// Nullable Type 이 데이터를 보유하고 있는지를 알려주는 프로퍼티

public virtual bool HasValue {get;}

 

그럼 간단하게 어떻게 활용 할 수 있는지 알아볼까요??

EX)

 using System;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

간단하게 만들어 봤는데 어떠세요 대충 감은 오는데 제너릭으로 선언하고 이러니깐 간단한 쏘스라도 어렵게 보이기만 하네요..ㅠㅠ

 

그래서 C# 에서는 위에서 언급한 것 처럼 [?] 연산자가 주로 사용 됩니다.

EX)

using System;

class NullableStart
{
   static void Main()
   {
       int? i = new int?(1);
       bool? b = new bool?(true);

       Console.WriteLine(i.GetType());
       Console.WriteLine(b.GetType());
   }
}

 

어때요? 정말이지 간단한 쏘스가 되었습니다. 그런데 프로그램 코딩을 할때 어디서 어떤 장면에 이 Nullable이 필요한지 저도 첨에는 막막했습니다. 그런데 MSDN 검색하다가 알게된건데요

우리가 int 를 선언할때 null 값으로 선언할 수 없어서 대충 값을 [0] 으로 선언하는것이 대부분 입니다. ( 아닌경우도 많겠지만요)

그리고 이런저런 연산을 하고도 초기값이 반환되는경우도 있을때 바로 연산끝에 [0] 이라는 값이 출력 되었는지 초기값 그대로[0] 이 도출되었는지를 알기위해서 만들어졌다고 하네요... 나름 일리있는 말인거 같습니다. 그런데 개인적으로 업무에서 사용할 일이 있을지 하는 의문은 드네요..^^

 

그래도 만약을 위해서 알아두는게 좋겠죠? ㅋㅋㅋ

 

그럼 오늘은 20000 yo^^

 

대한민국 개발자 여러분 홧팅하세요..^^

 

댓글 없음:

댓글 쓰기