관리 메뉴

Bull

[Dart] late String과 String? 의 차이 본문

Computer Language/Dart

[Dart] late String과 String? 의 차이

Bull_ 2024. 6. 10. 03:03

late String


설명:

late 키워드는 변수를 선언할 때 초기화되지 않은 상태로 두지만, 나중에 반드시 초기화할 것이라는 것을 보장합니다. Dart 컴파일러는 이 변수가 사용되기 전에 초기화될 것이라고 가정합니다.
Null 허용성:

기본적으로 null을 허용하지 않습니다.

사용 예:

late String name;  

void initializeName() {  
  name = "John Doe";  
}  

void printName() {  
  print(name); // 이 시점에서는 name이 반드시 초기화되어 있어야 함  
}  

String?


설명:
String?는 변수에 null 값을 가질 수 있는 선택형(nullable) 타입입니다. 변수를 선언할 때 초기화되지 않아도 되고, 이후에 null로 설정할 수 있습니다.
Null 허용성:
null을 허용합니다.

사용 예:

String? name;  

void setName(String? newName) {  
  name = newName;  
}  

void printName() {  
  if (name != null) {  
    print(name);  
  } else {  
    print("Name is not set");  
  }  
}

주요 차이점


초기화 보장

late String:

나중에 반드시 초기화해야 하며, 사용 전에 초기화되지 않은 상태로 접근하면 런타임 에러가 발생합니다.
String?:

초기화되지 않더라도 null 값을 가질 수 있으며, 사용할 때 null 체크를 해야 합니다.


Null 허용성:
late String: null을 허용하지 않습니다. 초기화되지 않은 상태로 접근하려 하면 에러가 발생합니다.
String?: null을 허용합니다. null 값을 가질 수 있습니다.

요약

late String은 변수의 초기화를 나중으로 미루지만, 반드시 초기화되어야 하는 경우 사용합니다.
String?은 변수에 null을 허용해야 하는 경우 사용합니다.
두 가지 방식 모두 변수의 초기화와 null 안전성을 관리하는 데 중요한 역할을 합니다. 사용 시나리오에 맞게 적절한 방식을 선택하면 됩니다.