我目前正在学习C#,遇到了以下问题:
[,]
和[][]
在C#类型中有什么区别?
我目前正在学习C#,遇到了以下问题:
[,]
和[][]
在C#类型中有什么区别?
[,]
形式创建一个矩形二维数组。当您指定维度时,将获得这些尺寸的二维矩阵。所有元素都将初始化为元素类型的默认值。
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