다음을 통해 공유


CA1825: 길이가 0인 배열 할당 방지

속성
규칙 ID CA1825
제목 길이가 0인 배열 할당 방지
범주 성능
수정 사항이 호환성을 깨뜨리는지 여부 또는 무중단인지 여부 주요 변경 아님
.NET 10에서 기본적으로 사용하도록 설정 제안 사항
적용 가능한 언어 C# 및 Visual Basic

원인

요소가 없는 빈 Array가 할당되었습니다.

규칙 설명

길이가 0인 배열을 초기화하면 메모리가 불필요하게 할당됩니다. 대신 Array.Empty 메서드를 호출하여 정적으로 할당된 빈 배열 인스턴스를 사용합니다. 메모리 할당은 이 메서드의 모든 호출에서 공유됩니다.

위반 문제를 해결하는 방법

위반 문제를 해결하려면 길이가 0인 배열 할당을 Array.Empty 호출로 바꿉니다. 예를 들어 다음 두 코드 조각은 규칙의 위반과 위반을 해결하는 방법을 보여 줍니다.

class C
{
    public void M1()
    {
        // Violates rule CA1825.
        var a = new int[0];
    }
}
class C
{
    public void M1()
    {
        // Resolves rule CA1825 violation.
        var a = System.Array.Empty<int>();
    }
}

Visual Studio에서는 이 규칙에 대한 코드 수정 사항을 사용할 수 있습니다. 이를 사용하려면 배열 할당에 커서를 놓고 Ctrl 키와 +마침표(.) 키를 누르세요. 옵션 목록이 표시되면 Array.Empty를 사용하세요를 선택합니다.

CA1825에 대한 코드 수정 사항 - 빈 배열 사용

경고를 표시하지 않는 경우

추가 메모리 할당에 대해 신경 쓰지 않는다면 이 규칙 위반을 억제해도 안전합니다.

주의

다음이 모두 적용되는 경우 이 규칙에서 가양성 경고가 표시될 수 있습니다.

  • Visual Studio 2022 버전 17.5 이상을 이전 버전의 .NET SDK(.NET 6 이하)와 함께 사용하고 있습니다.
  • .NET 6 SDK 분석기 또는 이전 버전의 분석기 패키지(예: Microsoft.CodeAnalysis.FxCopAnalyzers)를 사용하고 있습니다.
  • 길이가 0인 배열을 특성 인수로 사용하는데, 가장 일반적으로 매개 변수로 params 사용됩니다.

거짓 양성은 C# 컴파일러의 호환성을 깨뜨리는 변경으로 인해 발생합니다. 가양성 경고에 대한 수정 사항이 포함된 최신 분석기를 사용하는 것이 좋습니다. Microsoft.CodeAnalysis.NetAnalyzers 버전 7.0.0-preview1.22464.1 이상으로 업그레이드하거나 .NET 7 SDK에서 분석기를 사용하세요.

경고 표시 안 함

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

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

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

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

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

참고하기