Nullable<T>

Posted 알 수 없는 사용자 : 2008. 1. 22. 11:44, Filed under: 개발

데이터베이스 프로그래밍을 할 때 어떤 필드가 null로 초기화 되어있을 경우, 가끔씩 Primitive type에 null값을 넣고 싶을 때가 있다. 예를 들면 이런 코드이다.

DataSet ds = GetDataSet();
object obj = ds.Tables[0].Rows[0]["NullField"];
int value = 0;

if(obj != null)
{
  value = (int)obj;
}

이럴 땐 Nullable타입을 사용하면 된다. 사용법은 간단하다.

DataSet ds = GetDataSet();
int? value = (int?)ds.Tables[0].Rows[0]["NullField"];

int?타입은 Nullable<T>를 상속받고 있다. 이런 형태의 Nullable타입은 bool이나 double과 같은 C#에서 사용 가능한 모든 타입들에 대해 구현되어 있다.

Nullable타입은 다음과 같은 프로퍼티와 메소드가 존재한다.

HasValue 값이 존재하는지 검사한다.
Value 값을 리턴한다. 만약 값이 없으면 Exception을 발생시킨다.
GetValueOrDefault(T defaultValue) 존재하는 값 또는 기본값을 리턴한다.

다음과 같이 쉽게 사용할 수 있다.

int? i = 10;
if (x.HasValue)
{
  Console.WriteLine(x.Value);
}
else
{
  Console.WriteLine("NullValue");
}

이렇게 매번 if나 GetValueOrDefault를 사용하면 코드가 복잡해 보일 수 있기 때문에, Nullable타입과 함께 추가된 ??연산자를 사용할 수도 있다.

int? i = null;
Console.WriteLine(i ?? 10);

??연산자는 C에서부터 계승되어 오던 ?연산자를 사용하는 (i == null) ? i : 0 형태를 축약한 것으로 보면 된다.

참고자료:
http://msdn2.microsoft.com/en-us/library/2cf62fcy.aspx

Posted by : 알 수 없는 사용자

Response : ,

Notice

  1. 팀블로그 시작합니다.

Tag cloud

Recent Posts

Recent Comments

Recent Trackbacks

Calendar

«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

Bookmarks

  1. 신선한바람
  2. onionmen
  3. onionmen 미투데이
  4. 신선한바람 미투데이
  5. 횸피그
  6. 횸피그 미투데이

Site Stats

TOTAL HIT
TODAY HIT
YESTERDAY HIT