C#多维数组的初始化问题

在 C# 中,多维数组的初始化可以通过多种方式实现。多维数组有两种主要类型:二维数组和更高维度的数组(如三维数组)。下面详细说明了如何在 C# 中初始化这些多维数组,包括示例代码和说明。

1. 初始化二维数组

二维数组是一个数组的数组,类似于矩阵。在 C# 中,二维数组可以通过以下几种方式初始化:

1.1 声明并初始化

你可以在声明数组时直接初始化它:

csharp
// 声明并初始化二维数组 int[,] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

解释:上述代码创建了一个 3x3 的二维数组 matrix,并用指定的值进行初始化。

1.2 声明然后赋值

你也可以先声明一个二维数组,然后逐个赋值:

csharp
// 声明二维数组 int[,] matrix = new int[3, 3]; // 逐个赋值 matrix[0, 0] = 1; matrix[0, 1] = 2; matrix[0, 2] = 3; matrix[1, 0] = 4; matrix[1, 1] = 5; matrix[1, 2] = 6; matrix[2, 0] = 7; matrix[2, 1] = 8; matrix[2, 2] = 9;

解释:此代码首先声明一个 3x3 的二维数组 matrix,然后逐个元素赋值。

2. 初始化三维及更高维度数组

三维数组是一个二维数组的数组,可以扩展到更多维度。初始化方法与二维数组类似。

2.1 声明并初始化

csharp
// 声明并初始化三维数组 int[,,] threeDArray = { { { 1, 2, 3 }, { 4, 5, 6 } }, { { 7, 8, 9 }, { 10, 11, 12 } } };

解释:创建了一个 2x2x3 的三维数组 threeDArray,并用指定的值进行初始化。

2.2 声明然后赋值

csharp
// 声明三维数组 int[,,] threeDArray = new int[2, 2, 3]; // 逐个赋值 threeDArray[0, 0, 0] = 1; threeDArray[0, 0, 1] = 2; threeDArray[0, 0, 2] = 3; threeDArray[0, 1, 0] = 4; threeDArray[0, 1, 1] = 5; threeDArray[0, 1, 2] = 6; threeDArray[1, 0, 0] = 7; threeDArray[1, 0, 1] = 8; threeDArray[1, 0, 2] = 9; threeDArray[1, 1, 0] = 10; threeDArray[1, 1, 1] = 11; threeDArray[1, 1, 2] = 12;

解释:首先声明了一个 2x2x3 的三维数组 threeDArray,然后逐个元素赋值。

3. 使用 new 关键字创建并初始化

你还可以在运行时动态创建并初始化多维数组:

3.1 二维数组

csharp
// 动态创建并初始化二维数组 int rows = 3; int cols = 3; int[,] matrix = new int[rows, cols]; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { matrix[i, j] = i * cols + j + 1; // 例如:填充 1 到 9 的数字 } }

3.2 三维数组

csharp
// 动态创建并初始化三维数组 int x = 2, y = 2, z = 3; int[,,] threeDArray = new int[x, y, z]; for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { for (int k = 0; k < z; k++) { threeDArray[i, j, k] = i * y * z + j * z + k + 1; // 例如:填充 1 到 12 的数字 } } }

4. 多维数组与交错数组的区别

  • 多维数组:如 int[,],所有元素在内存中是连续存储的。
  • 交错数组:如 int[][],是一个数组的数组,内存中不连续,适用于不同长度的子数组。

5. 总结

在 C# 中,多维数组可以通过直接初始化或在运行时动态创建。二维数组和三维数组的初始化方法类似,包括声明时初始化和逐个赋值。确保根据实际需要选择合适的初始化方法,并了解多维数组与交错数组的区别。

关键字

C#, 多维数组, 二维数组, 三维数组, 数组初始化, new 关键字, 动态创建, 交错数组, int[,], int[,,], 数组赋值