Nullable?
Null(비어 있는) + able(~될 수 있는) -> 비어 있는 상태가 될 수 있는 형식
int? a = null;
float? b = null;
double? c = null;
int d; // 컴파일 에러
모든 Nullable 형식은 HasValue와 Value 두 가지의 속성을 가집니다.
int? a = null;
Console.WriteLine(a.HasValue); // null이므로 False
a = 37;
Console.WriteLine(a.HasValue); // True
Console.WriteLine(a.Value); // 37
널 조건부 연산자?
?. 기호를 사용. 객체의 멤버에 접근하기 전에 해당 객체가 null인지를 검사하여 그 결과가 참이면 null을 반환, 거짓이면 . 뒤에 지정된 멤버를 반환합니다.
class Foo
{
public int member;
}
Foo foo = null;
int? bar;
bar = foo?.memebr; // null이 아니면 memebr 필드에 접근
이외에도 배열과 같은 컬렉션 객체의 참조에 사용하디 위한 ?[] 기호가 있습니다.
ArrayList a = null;
a?.Add("야구"); // a?.이 null을 반환하므로 Add() 메소드는 호출x
a?.Add("축구");
WriteLine($"{a?.Count}"); // a?.이 null을 반환하므로 출력x
a = new ArrayList(); // null이 아닌 상태
a?.Add("야구");
a?.Add("축구");
WriteLine($"{a?.Count}"); // 2
WriteLine($"{a?[0]}"); // 야구
WriteLine($"{a?[1]}"); // 축구
널 병합 연산자
?? 기호를 사용. 널 조건부 연산자처럼 변수/객체의 null 검사를 간결하게 만들어주는 역할
int? a = null;
Console.WriteLine($"{a ?? 0}"); // a는 null이므로 0 출력
a = 99;
Console.WriteLine($"{a ?? 0}"); // a는 null이 아니므로 99 출력
'C#' 카테고리의 다른 글
[C#] this()/base()/상속/오버라이딩 (0) | 2023.12.20 |
---|