Condividi tramite


CA1814: Preferire matrici di matrici rispetto a matrici multidimensionali

TypeName

PreferJaggedArraysOverMultidimensional

CheckId

CA1814

Category

Microsoft.Performance

Breaking Change

Breaking

Causa

Un membro viene dichiarato come matrice multidimensionale.

Descrizione della regola

Una matrice di matrici è una matrice i cui elementi sono costituiti da matrici. Poiché le matrici che costituiscono gli elementi possono presentare dimensioni diverse, la quantità di spazio inutilizzato sarà inferiore per alcuni insiemi di dati.

Come correggere le violazioni

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

Esclusione di avvisi

Escludere un avviso da questa regola se la matrice multidimensionale non produce spazio inutilizzato.

Esempio

Nell'esempio riportato di seguito vengono illustrate dichiarazioni per le matrici di matrici e per le matrici 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
using System;

namespace PerformanceLibrary
{
    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}
                                };
    }
}