다음을 통해 공유


CA1860: 'Enumerable.Any()' 확장 메서드를 사용하지 마세요.

속성
규칙 ID CA1860
제목 'Enumerable.Any()' 확장 메서드를 사용하지 마세요.
범주 성능
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 제안 사항

원인

Enumerable.Any는 , Count또는 IsEmpty 속성이 있는 형식에서 Length호출됩니다.

규칙 설명

컬렉션 형식에 요소가 있는지 여부를 확인하려면 메서드를 호출 Enumerable.Any 하는 것보다 더 효율적이고 명확합니다. 또는 IsEmpty (가능한 경우) 속성을 사용하는 LengthCount것이 더 효율적입니다.

Any()확장 메서드인 LINQ(언어 통합 쿼리)를 사용합니다. 컬렉션의 자체 속성에 의존하는 것이 더 효율적이며 의도도 명확하게 설명합니다.

참고 항목

이 규칙은 CA1827과 유사 합니다. Any()를 사용할 수 있는 경우 Count()/LongCount()를 사용하지 마세요. 그러나 이 규칙은 Linq Count() 메서드에 적용되지만 이 규칙은 속성 사용을 Count 제안합니다.

위반 문제를 해결하는 방법

Any() 호출을 컬렉션 또는 속성에 대한 LengthCountIsEmpty 호출로 바꿉니다.

예시

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

bool HasElements(string[] strings)
{
    return strings.Any();
}
Function HasElements(strings As String()) As Boolean
    Return strings.Any()
End Function

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

bool HasElements(string[] strings)
{
    return strings.Length > 0;
}
Function HasElements(strings As String()) As Boolean
    Return strings.Length > 0
End Function

경고를 표시하지 않는 경우

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

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

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

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

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

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.