跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C Sharp 多维数组
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{DISPLAYTITLE:C#多维数组}} [[Category:C#学习路径结构]] [[Category:C#数组与集合]] == 简介 == '''多维数组'''是C#中用于存储表格状数据的重要数据结构,它允许开发者以多个维度(如行和列)组织数据。与一维数组不同,多维数组可以表示更复杂的数据结构,例如矩阵、棋盘或三维空间坐标。 在C#中,多维数组分为两种: * '''矩形数组(Rectangular Array)''':所有维度的长度固定且统一(如2x3矩阵)。 * '''交错数组(Jagged Array)''':每个维度的长度可以不同(如锯齿状数组)。 本文重点介绍矩形多维数组的声明、初始化和操作。 == 声明与初始化 == 多维数组的声明需指定维度数量和每维的长度。以下是语法示例: <syntaxhighlight lang="csharp"> // 声明一个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 } }; </syntaxhighlight> === 三维数组示例 === <syntaxhighlight lang="csharp"> // 声明一个2x2x2的三维数组 int[,,] cube = new int[2, 2, 2] { { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } }; </syntaxhighlight> == 访问元素 == 通过索引访问多维数组的元素,索引从0开始: <syntaxhighlight lang="csharp"> int[,] matrix = { {1, 2, 3}, {4, 5, 6} }; Console.WriteLine(matrix[0, 1]); // 输出: 2 matrix[1, 2] = 10; // 修改元素 </syntaxhighlight> == 遍历多维数组 == 使用嵌套循环遍历多维数组: <syntaxhighlight lang="csharp"> 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 */ </syntaxhighlight> === 使用 `foreach` === <syntaxhighlight lang="csharp"> foreach (int num in cube) { Console.Write(num + " "); // 输出: 1 2 3 4 5 6 7 8 } </syntaxhighlight> == 实际应用案例 == === 案例1:矩阵乘法 === <syntaxhighlight lang="csharp"> 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); </syntaxhighlight> === 案例2:游戏地图 === 用二维数组表示游戏地图(0=空地,1=障碍物): <syntaxhighlight lang="csharp"> int[,] map = { {0, 1, 0, 0}, {0, 1, 0, 1}, {0, 0, 0, 1} }; </syntaxhighlight> == 多维数组与内存布局 == 多维数组在内存中是连续存储的。以二维数组为例,元素按行优先顺序排列: <mermaid> flowchart LR A[0,0] --> B[0,1] --> C[0,2] --> D[1,0] --> E[1,1] --> F[1,2] </mermaid> 数学上,元素位置可通过公式计算: <math> \text{Offset} = i \times \text{cols} + j </math> == 常见问题 == === 1. 如何获取数组维度? === 使用 `Rank` 属性获取维度数量,`GetLength(dimension)` 获取具体维度长度: <syntaxhighlight lang="csharp"> int[,,] arr = new int[2, 3, 4]; Console.WriteLine(arr.Rank); // 输出: 3 Console.WriteLine(arr.GetLength(1)); // 输出: 3(第二维长度) </syntaxhighlight> === 2. 多维数组与交错数组的区别? === * 多维数组是单一对象,所有维度长度固定。 * 交错数组是“数组的数组”,每行长度可不同。 == 总结 == 多维数组是C#中处理表格数据的高效工具,适用于数学计算、游戏开发等场景。关键点包括: * 使用逗号分隔维度(如 `int[,]`)。 * 通过嵌套循环遍历元素。 * 注意内存布局对性能的影响。 {{Stub}} [[Category:编程语言]] [[Category:C Sharp]] [[Category:C Sharp 数组与集合]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Stub
(
编辑
)