참고 서적: 이것이 C# 이다(저자: 박상현)
int 형식의 변수를 선언하면 4 바이트 메모리가 할당된다.
C# 컴파일러는 이 메모리 공간에 반드시 어떤 값을 넣도록 강제한다.
하지만 어떤 값도 가지지 않는 변수가 필요할 때가 있다. (0이 아닌 null)
그때 사용하는게 Nullable 형식이다.
사용법
데이터 형식? 변수명; int? a = null; float? b = null;
HasValue와 Value 두 가지 속성을 갖는다.HasValue : 변수가 값을 가졌는지 True or FalseValue : 변수의 값객체의 멤버에 접근하기 전에 해당 객체가 null인지 검사하여 그 결과가 참(즉, 객체가 null)이면
결과로 null 반환, 그렇지 않으면 지정된 멤버 반환.
사용법
class ClassA { public int numA; } ClassA classA = null; int? num; num = ClassA?.numA;
classA가null이면null을 반환하고,
classA가null이 아니면numA를 반환한다.
'?.'와 비슷한 역할을 하지만, 객체의 멤버접근이 아닌 배열과 같은 컬렉션 객체의 첨자를 이용한 참조에 사용된다.
사용법
ArrayList arr=null; // arr은 null arr?.Add("ABC"); arr?.Add("DEF"); WriteLine($"Count : {arr?.Count}"); WriteLine($"{arr?[0]}"); // 첨자를 이용한 참조
arr이null이므로null을 반환한다.
만약arr이null이 아니라면 "ABC"를 반환한다.