C Sharp 多维数组
外观
简介[编辑 | 编辑源代码]
多维数组是C#中用于存储表格状数据的重要数据结构,它允许开发者以多个维度(如行和列)组织数据。与一维数组不同,多维数组可以表示更复杂的数据结构,例如矩阵、棋盘或三维空间坐标。
在C#中,多维数组分为两种:
- 矩形数组(Rectangular Array):所有维度的长度固定且统一(如2x3矩阵)。
- 交错数组(Jagged Array):每个维度的长度可以不同(如锯齿状数组)。
本文重点介绍矩形多维数组的声明、初始化和操作。
声明与初始化[编辑 | 编辑源代码]
多维数组的声明需指定维度数量和每维的长度。以下是语法示例:
// 声明一个2x3的二维数组
int[,] matrix = new int[2, 3];
// 声明并初始化一个2x2的二维数组
string[,] chessboard = new string[2, 2] { {"A1", "A2"}, {"B1", "B2"} };
// 简化初始化(编译器推断维度)
double[,] temperatures = { { 25.5, 26.0 }, { 23.8, 24.2 } };
三维数组示例[编辑 | 编辑源代码]
// 声明一个2x2x2的三维数组
int[,,] cube = new int[2, 2, 2] {
{ {1, 2}, {3, 4} },
{ {5, 6}, {7, 8} }
};
访问元素[编辑 | 编辑源代码]
通过索引访问多维数组的元素,索引从0开始:
int[,] matrix = { {1, 2, 3}, {4, 5, 6} };
Console.WriteLine(matrix[0, 1]); // 输出: 2
matrix[1, 2] = 10; // 修改元素
遍历多维数组[编辑 | 编辑源代码]
使用嵌套循环遍历多维数组:
int[,] grid = { {1, 2}, {3, 4}, {5, 6} };
for (int i = 0; i < grid.GetLength(0); i++) {
for (int j = 0; j < grid.GetLength(1); j++) {
Console.Write(grid[i, j] + " ");
}
Console.WriteLine();
}
/* 输出:
1 2
3 4
5 6
*/
使用 `foreach`[编辑 | 编辑源代码]
foreach (int num in cube) {
Console.Write(num + " "); // 输出: 1 2 3 4 5 6 7 8
}
实际应用案例[编辑 | 编辑源代码]
案例1:矩阵乘法[编辑 | 编辑源代码]
int[,] MultiplyMatrices(int[,] a, int[,] b) {
int rowsA = a.GetLength(0);
int colsA = a.GetLength(1);
int colsB = b.GetLength(1);
int[,] result = new int[rowsA, colsB];
for (int i = 0; i < rowsA; i++) {
for (int j = 0; j < colsB; j++) {
for (int k = 0; k < colsA; k++) {
result[i, j] += a[i, k] * b[k, j];
}
}
}
return result;
}
// 使用示例
int[,] a = { {1, 2}, {3, 4} };
int[,] b = { {5, 6}, {7, 8} };
var product = MultiplyMatrices(a, b);
案例2:游戏地图[编辑 | 编辑源代码]
用二维数组表示游戏地图(0=空地,1=障碍物):
int[,] map = {
{0, 1, 0, 0},
{0, 1, 0, 1},
{0, 0, 0, 1}
};
多维数组与内存布局[编辑 | 编辑源代码]
多维数组在内存中是连续存储的。以二维数组为例,元素按行优先顺序排列:
数学上,元素位置可通过公式计算:
常见问题[编辑 | 编辑源代码]
1. 如何获取数组维度?[编辑 | 编辑源代码]
使用 `Rank` 属性获取维度数量,`GetLength(dimension)` 获取具体维度长度:
int[,,] arr = new int[2, 3, 4];
Console.WriteLine(arr.Rank); // 输出: 3
Console.WriteLine(arr.GetLength(1)); // 输出: 3(第二维长度)
2. 多维数组与交错数组的区别?[编辑 | 编辑源代码]
- 多维数组是单一对象,所有维度长度固定。
- 交错数组是“数组的数组”,每行长度可不同。
总结[编辑 | 编辑源代码]
多维数组是C#中处理表格数据的高效工具,适用于数学计算、游戏开发等场景。关键点包括:
- 使用逗号分隔维度(如 `int[,]`)。
- 通过嵌套循环遍历元素。
- 注意内存布局对性能的影响。