null 허용 연산자

  • 2 minutes to read

C# 8.0부터 도입된 널 참조 형식(Nullable Reference Types) 기능과 함께 사용되는 !. 연산자는 컴파일러에게 해당 변수가 null이 아님을 확신하도록 명시하는 기능을 합니다. 이는 **Null 상태 분석(Nullability Analysis)**을 수행하는 컴파일러의 경고를 무시할 때 사용됩니다.

null 허용 연산자의 원어는 null-forgiving 연산자입니다. 다만, 명확한 한글화된 표현은 Microsoft Learn의 C# 참조 문서에 다음과 같이 null 허용 연산자로 표기가 되어 있어 박용준 강사도 이걸로 표기합니다.

null 허용 연산자

코드: NullForgivingDemo.cs

> static string? name; // name은 null이 될 수 있음
> static void PrintName() => 
.     Console.WriteLine(name!.ToUpper()); // name이 null이 아님을 보장함
> PrintName(); // 실행하면 NullReferenceException 발생
System.NullReferenceException: Object reference not set to an instance of an object.
> name = "Park";
> PrintName(); // 정상 출력: "Park" -> "Park".ToUpper() -> "PARK"
PARK
> 
PARK

이 예제에서 NullForgivingDemo 클래스의 namestring?으로 선언되어 **null이 될 수 있는 값(nullable reference type)**을 가질 수 있습니다. 그러나 PrintName 메서드에서 name!.ToUpper()를 호출하면서 !. 연산자를 사용하여 컴파일러에게 이 변수가 null이 아님을 확신하도록 명시하고 있습니다.

하지만 !. 연산자는 단순히 컴파일러의 경고를 무시할 뿐, 런타임 시 null 값이 들어있다면 여전히 NullReferenceException이 발생할 수 있습니다. 따라서 !. 연산자를 사용할 때는 실제로 변수가 null이 아님을 확신할 수 있는 경우에만 사용해야 합니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com