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

속성
규칙 ID CA1814
타이틀 다차원 배열보다 가변 배열을 사용하세요.
범주 성능
수정 사항이 주요 변경인지 여부 주요 변경
.NET 8에서 기본적으로 사용 아니요

원인

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

규칙 설명

다차원 배열에서 각 차원의 각 요소는 해당 차원의 다른 요소와 동일한 고정 크기를 갖습니다. 배열의 배열인 가변 배열에서 각 내부 배열은 크기가 다를 수 있습니다. 지정된 배열에 필요한 공간만 사용하면 공간이 낭비되지 않습니다. 규칙 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}
                            };
}