C#中[,]和[][]的区别

5

我目前正在学习C#,遇到了以下问题:

[,][][]在C#类型中有什么区别?


我投票关闭此问题,因为您必须阅读文档! - Matías Fidemraizer
https://dev59.com/dnRB5IYBdhLWcg3wiHll - Karel Tamayo
1个回答

12

[,]形式创建一个矩形二维数组。当您指定维度时,将获得这些尺寸的二维矩阵。所有元素都将初始化为元素类型的默认值。

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

就内存而言,数组被存储为内存中的单个块(大小为width*height)。访问一个元素会稍微慢一些,并且运行时执行更昂贵的操作-请参见http://blog.mischel.com/2013/05/08/are-jagged-arrays-faster-than-rectangular-arrays/

[][] 称为不规则数组,它基本上是一个数组的数组。当您创建它时,您首先只指定第一维的大小:

int[][] jaggedArray = new int[3][];

现在你需要手动为每一行创建一个new数组(它们最初为null

jaggedArray[0] = new int[10];
jaggedArray[1] = new int[6];

这样做的好处是每一行可以有不同的长度。

在内存中,每一行都存储在不同的位置,但访问特定元素最终更快,因为它只需要运行时查找基础数组中行数组的指针,然后像正常数组一样查找请求的元素。


多维数组是否以不同的方式保存?(例如 height, width, data... 而不是像 jaggedArray 一样 height, width, data, width, data... - CodenameLambda
实际上,非常不同 - 我已经更新了我的答案,并为两者提供了描述。 - Martin Zikmund
1
你的URL不再可用。 - Traderhut Games

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接