다음을 통해 공유


CA1871: nullable 구조체를 'ArgumentNullException.ThrowIfNull'에 전달하지 마세요.

재산 가치
규칙 ID CA1871
제목 nullable 구조체를 'ArgumentNullException.ThrowIfNull'에 전달하지 마세요.
범주 성능
수정이 정상 작동을 방해하거나 방해하지 않는 호환성이 손상되지 않는 경우
.NET 9에서 기본적으로 사용하도록 설정되어 있음 정보로서

원인

nullable 구조체(예: int? 또는 Guid?)가 ArgumentNullException.ThrowIfNull로 전달될 때, 개체로 박싱되어 성능 저하가 발생합니다.

규칙 설명

성능을 향상시키기 위해서는 HasValue 속성을 확인하여 수동으로 예외를 throw하는 것이 null 허용 구조체를 ArgumentNullException.ThrowIfNull에 전달하는 것보다 더 좋습니다.

위반을 해결하는 방법

null을 확인한 후 ArgumentNullException을 수동으로 던집니다.

본보기

다음 코드 조각은 CA1871 위반을 보여줍니다.

static void Print(int? value)
{
    ArgumentNullException.ThrowIfNull(value);
    Console.WriteLine(value.Value);
}

다음 코드 조각은 위반을 해결합니다.

static void Print(int? value)
{
    if (!value.HasValue)
    {
        throw new ArgumentNullException(nameof(value));
    }

    Console.WriteLine(value.Value);
}

경고를 표시하지 않는 경우

성능이 중요하지 않은 경우 이 경고를 표시하지 않는 것이 안전합니다.

경고 표시 안 함

단일 위반을 억제하려면 소스 파일에 전처리기 지시문을 추가하여 규칙을 비활성화한 후 다시 활성화하십시오.

#pragma warning disable CA1871
// The code that's violating the rule is on this line.
#pragma warning restore CA1871

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 해당 심각도를 구성 파일none 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.CA1871.severity = none

자세한 내용은 코드 분석 경고표시하지 않는 방법을 참조하세요.