C#中[]和[][]的区别
the difference between [,] and [][] in 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];
这样做的好处是每行可以有不同的长度。
在内存中,每一行都存储在不同的位置,但访问特定元素最终会更快,因为它只需要运行时在基数组中找到指向行数组的指针,然后找到像普通数组一样请求元素。
我目前正在尝试学习 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];
这样做的好处是每行可以有不同的长度。
在内存中,每一行都存储在不同的位置,但访问特定元素最终会更快,因为它只需要运行时在基数组中找到指向行数组的指针,然后找到像普通数组一样请求元素。