CA1814: Preferire matrici di matrici rispetto a matrici multidimensionali

Valore
ID regola CA1814
Categoria Prestazioni
Correzione in assenza di interruzioni o interruzioni Interruzione

Causa

Un membro viene dichiarato come una matrice multidimensionale, che può comportare lo spreco di spazio per alcuni set di dati.

Descrizione della regola

In una matrice multidimensionaleogni elemento di ogni dimensione ha le stesse dimensioni fisse degli altri elementi della dimensione. In una matricedi matrici, ovvero una matrice di matrici, ogni matrice interna può avere dimensioni diverse. Utilizzando solo lo spazio necessario per una determinata matrice, non viene sprecato spazio. Questa regola, CA1814, consiglia di passare a una matrice di matrici per conservare la memoria.

Come correggere le violazioni

Per correggere una violazione di questa regola, modificare la matrice multidimensionale in una matrice di matrici.

Quando escludere gli avvisi

È possibile eliminare un avviso da questa regola se la matrice multidimensionale non spreca spazio.

Esempio

Nell'esempio seguente vengono illustrate le dichiarazioni per matrici frastagliate e multidimensionali.

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