Flutter
플러터 - 다트 언어 널 안정성
마루설아
2025. 3. 22. 15:43
main() {
int num1 = 10;
int? num2 = 20; // NULL 허용 변수
num1 = null; // 오류!
num2 = null;
// NULL 허용 변수를 var 에는 사용할 수 없다.
var? num3 = 10; // 오류!
// NULL 허용 변수를 dynamic에 쓰는 것은 의미가 없다.
// 모든 타입의 데이터를 대입할 수 있으므로 NULL도 허용
dynamic? num4 = 20; // 오류!
}
// 전역변수 (톱 레벨 변수)는 NULL 비허용일 때 무조건 초기화하여야 한다.
int n1; // 오류!
int? n2;
// 클래스 변수도 초기화하지 않으면 사용 불가
class myclass{
int n3; // 오류!
int? n4;
}
// 함수에서는 초기화하지 않아도 오류 없음
func(){
int n5;
}
// 널 허용변수 형 변환
// 널 허용변수인 int?가 int의 상위 타입이다.
int num1 = 10;
int? num2 = 20;
main(){
num1 = num2; // 오류!
num2 = num1;
// 명시적 형변환을 통해 대입 가능
num1 = num2 as int;
}
// 널 허용변수의 초기화를 미루는 late
int num1; // 오류!
late int num;
이외 널 안정성 연산자
1. 널 점검 연산자 : !
2. 멤버 접근 연산자 : ?. ?[]
3. 값 대입 및 대체 연산자 : ??