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

Posted

技术标签:

【中文标题】C#中[,]和[][]的区别[重复]【英文标题】:the difference between [,] and [][] in C# [duplicate] 【发布时间】:2017-03-13 00:26:03 【问题描述】:

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

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

【问题讨论】:

我投票结束这个问题,因为你必须阅读文档! ***.com/questions/597720/… 【参考方案1】:

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

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... 而不是 height, width, data, width, data... 就像使用 jaggedArray 一样) 是的,实际上非常不同 - 我已经用两者的描述更新了我的答案 您的网址已失效。

以上是关于C#中[,]和[][]的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#中参数/参数之间的区别[重复]

C#中的方法与属性-有啥区别[重复]

C#中的string[][]和string[,]有啥区别[重复]

C#中的“Main(String [] args)”和“Main(string [] args)”有啥区别[重复]

区别 b/w 在 C# 中隐式实现成员和显式实现成员 [重复]

C#:方法类型之间的区别[重复]