null 허용 연산자

  • 2 minutes to read

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

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

null 허용 연산자

null 허용 연산자(!)로 컴파일러 경고 무시하기: NullForgivingDemo.cs

코드: 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이 아님을 확신할 수 있는 경우에만 사용해야 합니다.

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com