어떤 값도 가지지 않는 변수가 필요 할때는?

(c# 9.0부터 적용)

변수에게 할당된 메모리 공간을 비워둘 수 있도록 Nullable 형식을 사용하면 됩니다.

Nullable 형식의 변수를 선언할 때는 다음과 같이 원래의 데이터 형식 뒤에

‘?’만 붙여주면 됩니다.

데이터형식? : 변수이름;

Nullable 형식을 사용할 수 있는 경우는 값 형식에 한해서 입니다. 참조 형식은 사용할 수 없습니다.

ex)object

// Nullable 형식 변수 선언 몇가지 예시
int? a = null;
float? b = null;
double? c = null;

한편, 모든 Nullable 형식은 HasValue 와 Value 두 가지 속성을 갖고 있습니다.

HasValue 속성은 해당 변수가 값을 갖고 있는지 또는 그렇지 않은지를 나타내고,

Value 속성은 변수에 담겨 있는 값을 나타냅니다.

int? a = null;

Console.WriteLine( a.HasValue ); // a 는 null이므로 False 출력

a = 37;
Console.WriteLine( a.HasValue ); // a는 37을 갖고 있으므로 True 출력
Console.WriteLine( a.Value );    // 37을 출력 

어떤 Nullable 형식 변수의 HasValue 속성이Fasle 값을 갖고 있다면 그 변수는 비어 있다는 뜻입니다.

만약 이 변수에 대해 Value 속성을 이용하여 값을 꺼내려 시도하면 CLR은 InvalidOperation Exception 예외를 띄웁니다. 따라서 Nullable 형식을 사용할 때는 HasValue 속성을 확인하거나 null과 같은지를 비교하여 변수가 비어 있는지 확인하는 사전 검사가 필요합니다.