다음을 통해 공유


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}
                            };
}