다음을 통해 공유


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

속성
규칙 ID CA1860
제목 'Enumerable.Any()' 확장 메서드를 사용하지 마세요.
범주 성능
수정 사항이 호환성을 깨뜨리는지 여부 또는 무중단인지 여부 주요 변경 아님
.NET 10에서 기본적으로 사용하도록 설정 제안 사항
적용 가능한 언어 C# 및 Visual Basic

원인

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

규칙 설명

컬렉션 형식에 요소가 있는지 확인하는 데에는 메서드를 호출하는 것보다 Length, Count, 또는 (가능한 경우) IsEmpty 속성을 사용하는 것이 더 효율적이고 명확합니다.

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

주의

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

위반 문제를 해결하는 방법

Any() 호출을 컬렉션의 Length, Count, 또는 IsEmpty 속성 호출로 바꾸십시오.

예시

다음 코드 조각은 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

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