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 형태를 축약한 것으로 보면 된다.
'개발' 카테고리의 다른 글
[두번째] Javascript를 사용한 rich Editor. (2) | 2007.12.12 |
---|---|
[첫번째] Javascript를 사용한 rich Editor. (1) | 2007.12.09 |
Revu스타일의 슬라이딩 로그인 패널 만들기 (1) (0) | 2007.09.19 |
[Ajax.Net] JavaScript로 Animation 제어하기 (0) | 2007.09.09 |
ExtremeSwank OpenID Consumer For ASP.Net 2.0 (3) | 2007.09.03 |