언어

CA1814: 다차원 배열보다 가변 배열을 사용하십시오.

속성 값
규칙 ID CA1814
제목 다차원 배열보다 가변 배열을 사용하세요.
범주 성능
수정 사항이 호환성을 깨뜨리는지 여부 또는 무중단인지 여부 주요 변경
.NET 10에서 기본적으로 사용하도록 설정 아니요
적용 가능한 언어 C# 및 Visual Basic

원인

멤버가 다차원 배열로 선언되어 일부 데이터 세트의 공간이 낭비될 수 있습니다.

규칙 설명

다차원 배열에서 각 차원의 각 요소는 해당 차원의 다른 요소와 동일한 고정 크기를 갖습니다. 배열의 배열인 가변 배열에서 각 내부 배열은 크기가 다를 수 있습니다. 지정된 배열에 필요한 공간만 사용하면 공간이 낭비되지 않습니다. 규칙 CA1814는 가변 배열로 전환하여 메모리를 절약할 것을 권장합니다.

위반 문제를 해결하는 방법

이 규칙의 위반 문제를 해결하려면 다차원 배열을 가변 배열로 변경합니다.

경고를 표시하지 않는 경우

다차원 배열이 공간을 낭비하지 않는 경우 이 규칙의 경고를 표시하지 않아도 됩니다.

경고 표시 안 함

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

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

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

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

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

예시

다음 예제에서는 가변 배열과 다차원 배열에 대한 선언을 보여 줍니다.

Imports System

Public Class ArrayHolder
    Private jaggedArray As Integer()() =  {New Integer() {1, 2, 3, 4}, _
                                           New Integer() {5, 6, 7}, _
                                           New Integer() {8}, _
                                           New Integer() {9}}
    
    Private multiDimArray As Integer(,) =  {{1, 2, 3, 4}, _
                                            {5, 6, 7, 0}, _
                                            {8, 0, 0, 0}, _
                                            {9, 0, 0, 0}}
End Class
public class ArrayHolder
{
    int[][] jaggedArray = { new int[] {1,2,3,4},
                            new int[] {5,6,7},
                            new int[] {8},
                            new int[] {9}
                          };

    int[,] multiDimArray = {{1,2,3,4},
                             {5,6,7,0},
                             {8,0,0,0},
                             {9,0,0,0}
                            };
}