다음을 통해 공유


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

속성
규칙 ID CA1825
타이틀 길이가 0인 배열 할당 방지
범주 성능
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 제안 사항

원인

요소가 없는 빈 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를 사용하세요를 선택합니다.

Code fix for CA1825 - use array empty

경고를 표시하지 않는 경우

추가 메모리 할당이 중요하지 않은 경우 이 규칙의 위반을 표시하지 않아도 됩니다.

참고 항목

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

  • 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

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

참고 항목