>백엔드 개발 >C++ >C# 8.0에서 `!`(Null-forgiving) 연산자는 무엇을 의미합니까?

C# 8.0에서 `!`(Null-forgiving) 연산자는 무엇을 의미합니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-09 10:16:45991검색

What Does the `!` (Null-Forgiving) Operator Mean in C# 8.0?

null! 연산자의 의미

C# 8.0 및 null 허용 참조 유형 기능에서 ! 연산자에는 "null 허용 연산자"라는 새로운 목적이 있습니다. 유형에 적용될 때 이 연산자는 값의 Null 허용 여부를 재정의하여 Null을 허용하지 않게 만듭니다. 즉, 기본적으로 Null을 허용하더라도 Null은 "Null이 아닌" 유형으로 처리됩니다.

실제예

LastName 속성이 null을 허용하고 MiddleName 속성이 null을 허용하지 않는 클래스를 생각해 보세요.

<code class="language-csharp">public class Person
{
    public string? LastName { get; set; }
    public string MiddleName { get; set; } = null!;
}</code>

첫 번째 줄과 두 번째 줄의 차이점

  • 첫 번째 줄: LastName 속성은 null을 허용하므로 ? 연산자로 표시되는 null 값을 보유할 수 있습니다.
  • 두 번째 줄: MiddleName 속성은 null을 허용하지 않으며 !으로 표시됩니다. 이는 null 값을 보유할 수 없음을 의미합니다. 그러나 null! 표현식은 이러한 null 허용 여부를 명시적으로 무시하고 null을 null이 아닌 값으로 처리합니다.

기술적 설명

C# 8.0에는 모든 참조 유형이 기본적으로 null을 허용하지 않는 "null 안전성"이 도입되었습니다. nullable 유형을 나타내려면 ? 연산자를 사용해야 합니다. 반대로 ! 연산자는 null 허용 여부를 나타내기 위해 null 허용 유형에 적용할 수 있습니다.

메모

  • 남용 방지: Null 허용 연산자는 Null 안전성의 목적을 상실하므로 주의해서 사용해야 합니다.
  • 런타임 예외: ! 연산자는 컴파일러 수준 검사만 비활성화합니다. 값이 null이면 런타임 예외가 계속 발생할 수 있습니다.
  • 유효한 사용 사례: 제한에도 불구하고 null 허용 연산자는 컴파일러가 값의 null 허용 여부를 추론할 수 없는 경우, 레거시 코드를 마이그레이션할 때 또는 null을 처리할 때 코드 동작을 테스트할 때 사용됩니다. 도움이 될 수도 있습니다.

위 내용은 C# 8.0에서 `!`(Null-forgiving) 연산자는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.