8.2.3 Array types
Arrays may be single-dimensional or multi-dimensional. Both .rectangular.
and .jagged. arrays are
supported.
Single-dimensional arrays are the most common type. The example
using System;
class Test
{
static void Main() {
int[] arr = new int[5];
for (int i = 0; i < arr.Length; i++)
arr[i] = i * i;
for (int i = 0; i < arr.Length; i++)
Console.WriteLine("arr[{0}] = {1}", i, arr[i]);
}
}
creates a single-dimensional array of int values, initializes the array
elements, and then prints each of them
out. The output produced is:
arr[0] = 0
arr[1] = 1
arr[2] = 4
arr[3] = 9
arr[4] = 16
The type int[] used in the previous example is an array type. Array types
are written using a non-arraytype
followed by one or more rank specifiers. The example
class Test
{
static void Main() {
int[] a1; // single-dimensional array of int
int[,] a2; // 2-dimensional array of int
int[,,] a3; // 3-dimensional array of int
int[][] j2; // "jagged" array: array of (array of int)
int[][][] j3; // array of (array of (array of int))
}
}
shows a variety of local variable declarations that use array types with
int as the element type.
Array types are reference types, and so the declaration of an array
variable merely sets aside space for the
reference to the array. Array instances are actually created via array
initializers and array creation
expressions. The example
class Test
{
static void Main() {
int[] a1 = new int[] {1, 2, 3};
int[,] a2 = new int[,] {{1, 2, 3}, {4, 5, 6}};
int[,,] a3 = new int[10, 20, 30];
int[][] j2 = new int[3][];
j2[0] = new int[] {1, 2, 3};
j2[1] = new int[] {1, 2, 3, 4, 5, 6};
j2[2] = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
}
}
shows a variety of array creation expressions. The variables a1, a2 and a3
denote rectangular arrays, and
the variable j2 denotes a jagged array. It should be no surprise that these
terms are based on the shapes of
the arrays. Rectangular arrays always have a rectangular shape. Given the
length of each dimension of the
array, its rectangular shape is clear. For example, the lengths of a3.s
three dimensions are 10, 20, and 30,
respectively, and it is easy to see that this array contains 10*20*30
elements.