# CSharp - Array Multidimensional Arrays

## Introduction

Multidimensional arrays come in two varieties: rectangular and jagged.

Rectangular arrays are an n-dimensional block of memory, and jagged arrays are arrays of arrays.

## Rectangular arrays

Rectangular arrays are declared using commas to separate each dimension.

The following declares a rectangular two-dimensional array, where the dimensions are 3 by 3:

```int[,] matrix = new int[3,3];
```

GetLength() method from array returns the length for a given dimension starting at 0.

```for (int i = 0; i < matrix.GetLength(0); i++){
for (int j = 0; j < matrix.GetLength(1); j++){
matrix[i,j] = i * 3 + j;
}
}
```

A rectangular array can be initialized as follows:

```int[,] matrix = new int[,]{
{0,1,2},
{3,4,5},
{6,7,8}
};
```

## Jagged arrays

Jagged arrays are declared using successive square brackets to represent each dimension.

The following code declares a jagged two-dimensional array, where the outermost dimension is 3:

```int[][] matrix = new int[3][];
```

Each inner array can be an arbitrary length and must be created manually:

```for (int i = 0; i < matrix.Length; i++)
{
matrix[i] = new int[3];                    // Create inner array
for (int j = 0; j < matrix[i].Length; j++)
matrix[i][j] = i * 3 + j;
}
```

A jagged array can be initialized as follows.

```int[][] matrix = new int[][]
{
new int[] {0,1,2},
new int[] {3,4,5},
new int[] {6,7,8,9}
};
```