多维数组(C# 编程指南)Multidimensional Arrays (C# Programming Guide)

数组可具有多个维度。Arrays can have more than one dimension. 例如,以下声明创建一个具有四行两列的二维数组。For example, the following declaration creates a two-dimensional array of four rows and two columns.

int[,] array = new int[4, 2];

以下声明创建一个具有三个维度(4、2 和 3)的数组。The following declaration creates an array of three dimensions, 4, 2, and 3.

int[,,] array1 = new int[4, 2, 3];

数组初始化Array Initialization

声明后即可初始化数组,如以下示例所示。You can initialize the array upon declaration, as is shown in the following example.

// Two-dimensional array.
int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
// The same array with dimensions specified.
int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
// A similar array with string elements.
string[,] array2Db = new string[3, 2] { { "one", "two" }, { "three", "four" },
                                        { "five", "six" } };

// Three-dimensional array.
int[,,] array3D = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } },
                                 { { 7, 8, 9 }, { 10, 11, 12 } } };
// The same array with dimensions specified.
int[,,] array3Da = new int[2, 2, 3] { { { 1, 2, 3 }, { 4, 5, 6 } },
                                       { { 7, 8, 9 }, { 10, 11, 12 } } };

// Accessing array elements.
System.Console.WriteLine(array2D[0, 0]);
System.Console.WriteLine(array2D[0, 1]);
System.Console.WriteLine(array2D[1, 0]);
System.Console.WriteLine(array2D[1, 1]);
System.Console.WriteLine(array2D[3, 0]);
System.Console.WriteLine(array2Db[1, 0]);
System.Console.WriteLine(array3Da[1, 0, 1]);
System.Console.WriteLine(array3D[1, 1, 2]);

// Getting the total count of elements or the length of a given dimension.
var allLength = array3D.Length;
var total = 1;
for (int i = 0; i < array3D.Rank; i++)
{
    total *= array3D.GetLength(i);
}
System.Console.WriteLine("{0} equals {1}", allLength, total);

// Output:
// 1
// 2
// 3
// 4
// 7
// three
// 8
// 12
// 12 equals 12

还可在不指定级别的情况下初始化数组。You can also initialize the array without specifying the rank.

int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

如果选择在不初始化的情况下声明数组变量,则必须使用 new 运算符将数组赋予变量。If you choose to declare an array variable without initialization, you must use the new operator to assign an array to the variable. new 的用法如以下示例所示。The use of new is shown in the following example.

int[,] array5;
array5 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };   // OK
//array5 = {{1,2}, {3,4}, {5,6}, {7,8}};   // Error

以下示例将值赋予特定的数组元素。The following example assigns a value to a particular array element.

array5[2, 1] = 25;

同样,以下示例将获取特定数组元素的值并将其赋予变量 elementValueSimilarly, the following example gets the value of a particular array element and assigns it to variable elementValue.

int elementValue = array5[2, 1];

以下代码示例将数组元素初始化为默认值(交错数组除外)。The following code example initializes the array elements to default values (except for jagged arrays).

int[,] array6 = new int[10, 10];

请参阅See also