CA1814: Preferir las matrices escalonadas antes que multidimensionalesCA1814: Prefer jagged arrays over multidimensional

TypeNameTypeName PreferJaggedArraysOverMultidimensionalPreferJaggedArraysOverMultidimensional
Identificador de comprobaciónCheckId CA1814CA1814
CategoríaCategory Microsoft.PerformanceMicrosoft.Performance
Cambio problemáticoBreaking Change ProblemáticoBreaking

MotivoCause

Un miembro se declara como una matriz multidimensional.A member is declared as a multidimensional array.

Descripción de la reglaRule Description

Una matriz escalonada es una matriz cuyos elementos son matrices.A jagged array is an array whose elements are arrays. Las matrices que constituyen los elementos pueden ser de tamaños diferentes, reduciendo el espacio desaprovechado para algunos conjuntos de datos.The arrays that make up the elements can be of different sizes, leading to less wasted space for some sets of data.

Cómo corregir infraccionesHow to Fix Violations

Para corregir una infracción de esta regla, cambie la matriz multidimensional a una matriz escalonada.To fix a violation of this rule, change the multidimensional array to a jagged array.

Cuándo suprimir advertenciasWhen to Suppress Warnings

Suprimir una advertencia de esta regla si la matriz multidimensional no desaprovecha espacio.Suppress a warning from this rule if the multidimensional array does not waste space.

EjemploExample

En el ejemplo siguiente se muestra declaraciones de matrices escalonadas y multidimensionales.The following example shows declarations for jagged and multidimensional arrays.

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