- Dart는 강한 Null 안정성을 가지고 있다.
- null로 설정된 변수에 의해 예상치 못하게 발생하는 오류를 예방한다.
- Dart 3 버전부터 지원한다.
변수의 초기화에 대한 차이
null을 저장할 수 없는 변수
String name = "홍길동"; //값 초기화
print(name);
String address;
print(address); //오류 발생
Null을 저장할 수 있는 변수
String? name = "홍길동";
print(name); //출력 : 홍길동
String? address;
print(address); //출력 : null
null 조건 연산자 (?)
- 잘못된 참조로 인한 오류를 방지해준다.
- 잘못된 참조일 경우에는 null 값을 반환한다.
String? temp = null;
//출력 : null
print(temp?.length);
null 인식 연산자 (??)
- 값이 null일 경우에 대한 기본 값을 설정해준다.
String? step1 = null;
String step2 = step1 ?? "This is Step2"; //기본 값 설정
print(step2); //출력 : This is Step2
값 보증 연산자 (!)
- 보유하고 있는 값이 null이 아님을 나타낼 때 사용한다.
- 코드의 흐름상 null이 아님을 확신할 수 있을 때만 사용해야 한다.
- 잘못 사용하면 런타임 에러가 발생하게 된다.
String? temp = "abcdef";
print(temp!.length); //출력 : 6