Pages

September 24, 2013

[C#] Nullable Type - int?, char?, bool?

C# Programming Guide - Nullable type

C#에서는 Nullable Type을 선언할 수 있는데 예를 들어 다음과 같이 ?를 기본 자료형에 붙여쓰면 해당 변수는 Nullable Type이 된다. 

int? compound;
char? sigleCharacter;

이 자료형은 기본 자료형의 표현 범위에 null 값을 추가한 형태로 예를 들어 int? 의 경우 int 값외에 null이 할당 가능하다.


주로 해당 타입을 선언 후 값을 바로 할당 할 수 없는 경우에 null을 할당하여 해당 변수가 초기화 되어 있지 않음을 구별하여 쓸 수 있다.


Nullable Type은 두가지 read-only property를 가지는데 


  • HasValue (bool) : true인경우 값이 할당 되었음을 의미하고, false의 경우 값이 할당 되지 않은 상태 (null)임을 의미한다.
  • Value : 실제 할당 된 값을 의미하며, 값을 할당하지 않고 이 속성을 참조하려 하면 InvalidOperation 예외가 발생한다.
int? x = 10;
if (x.HasValue)
{
    System.Console.WriteLine(x.Value);
}
else
{
    System.Console.WriteLine("Undefined");
}


기본 연산자나 비교 구문에서 Nullable Type을 쓸 경우 예상과는 다르게 동작할 수 있으므로 주의를 해서 써야 한다. 자세한 내용은 위의 링크를 참조하자.

No comments:

Post a Comment