Prefer jagged arrays over multidimensional

TypeName

PreferJaggedArraysOverMultidimensional

CheckId

CA1814

Category

Microsoft.Performance

Breaking Change

Breaking

Cause

A member is declared as a multidimensional array.

Rule Description

A jagged array is an array whose elements are arrays. The arrays that make up the elements can be of different sizes, leading to less wasted space for some sets of data.

How to Fix Violations

To fix a violation of this rule, change the multidimensional array to a jagged array.

When to Suppress Warnings

Suppress a warning from this rule if the multidimensional array does not waste space.

Example

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