<개인공부>/[Flutter, Dart]

[Dart] 다트 Null Safety와 !, ?, ??, ??= 연산자

BlockDMask 2025. 2. 13. 08:00
반응형

안녕하세요. BlockDMask입니다.
오늘은 Dart 문법 중에서 Null Safety (널 세이프티)와 관련된 중요한 개념들을 소개해 보겠습니다.
다양한 곳에서 많이 쓰이는 !, ?, ??, ??= 연산자에 대해 알아보고, 안전한 null 처리를 위한 기법들도 함께 살펴보겠습니다.
오늘 포스팅을 보면, 더 안정적이고 신뢰할 수 있는 코드를 작성할 수 있습니다.

 

Null Safety가 왜 중요한가?

Dart의 널 세이프티는 코드의 안정성을 높이는 중요한 기술입니다. Null Safety를 통해 변수에 null 값이 들어가는 것을 방지하거나, null 값으로 인해 발생할 수 있는 오류(Null Pointer Exception)를 사전에 차단할 수 있습니다. 이는 앱의 크래시를 줄이고, 런타임 에러를 예방하여 더 신뢰성 있는 코드를 작성할 수 있게 합니다.

 

주요 이점:

- 안정성 향상: Null 참조로 인한 오류 방지.

- 코드 가독성 개선: 변수의 null 가능성을 명확히 표현

- 컴파일 단계에서 오류 감지: 런타임이 아닌 컴파일 타임에 오류를 발견.

 

(null이란? : 값이 없음을 나타내는 특별한 데이터입니다. 이 값이 없는 곳에 접근을 하게 되면 에러가 발생합니다.)

 

 

 

다트 !, ?, ??, ??= 연산자 설명 및 예제

널 관련 연산자는 아래 4가지가 있습니다.

각자 부르는 명칭이 있으니 참고하세요.

!(Null Assertion), ?(Null-aware), ??(Null-coalescing), ??=(Null-coalescing Assignment)

각각은 모두 연산자(Operator)입니다.

각 역할이 다르기 때문에 잘 구분하셔야 합니다.

 

 

1. ! (Null Assertion Operator)

! 연산자는 변수의 값이 절대로 null이 아님을 개발자가 확신할 때 사용합니다.
만약 null인 값에 ! 를 사용하면 런타임 에러가 발생합니다. (정말 확신하는 경우 사용!)

 

 

 

사용시기: 값이 null이 아님을 100프로 확신할 때만 사용

 

 

 

2. ? (Null-aware Operator)

? 는 null 가능성이 있는 객체에 접근할 때 사용합니다.
객체가 null이면 null을 반환하고, 그렇지 않으면 해당 프로퍼티나 메서드를 호출합니다.

(즉, null 이 아니면 ? 뒤에 있는 걸 실행함)

 

 

 

사용시기: 객체가 null일 수 있을 때 안전하게 접근하기 위해 사용.

 

 

 

3. ?? (Null-coalescing Operator)

?? 는 왼쪽 피연산자가 null이면 오른쪽 값을 반환합니다.

 

 

 

사용시기: 기본값을 사용하고 싶을 때 사용.

 

 

 

4. ??= (Null-coalescing Assignment Operator)

??= 는 변수가 null일 경우에만 값을 할당합니다.
(변수가 null이 아니면 무시)

 

 

 

사용시기: 변수에 값이 없을 때 기본값을 설정할 때 유용.

 

 

 

5. 안전한 다트 Null 처리 기법 예제 종합

 

 

 

Null Safety 기능을 잘 활용해서 안전한 Dart 코드 작성하시길 바랍니다.

이상, 오늘은 다트 널 세이프티 연산자 4종에 대해서 알아보았습니다.

감사합니다.

반응형