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. 값 대입 및 대체 연산자 : ??