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
자세한 내용은 코드 분석 경고표시하지 않는 방법을 참조하세요.
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET