C#阵列 - 字符串[] []对字符串[,]

C#阵列 - 字符串[] []对字符串[,]

问题描述:

可能重复:
What is differences between Multidimensional array and Array of Arrays in C#?C#阵列 - 字符串[] []对字符串[,]

任何人都可以解释我string[][]string[,]之间的区别?

string[,]multidimensional array

multidimensional array

string[][]Jagged array

交错数组是数组,其元素是数组。 锯齿状阵列的元素可以具有不同的尺寸和大小。锯齿状的 数组有时被称为“数组阵列”。“

Jagged array

string[,] - Multidimensional Arrary(矩形阵列)

多维可以具有多于一个维度。以下示例显示如何创建两行和两列的二维数组。

声明:

string[,] contacts; 

实例化:

string[,] contacts = new string[2,2]; 

初始化:

string[,] contacts = new string[2, 2] { {"John Doe","[email protected]"}, {"Jane Doe","[email protected]"} }; 



string[ ][ ] - Jagged Array(阵列阵列)

锯齿阵列是一个数组,其元素是数组。锯齿状阵列的元素可以具有不同的尺寸和大小。锯齿阵列有时被称为“阵列阵列”。

锯齿阵列可以有效地存储许多不同长度的行。任何类型的数据,参考或价值都可以使用。索引锯齿状阵列速度很快。分配它们有点慢。

交错数组比多维数组

宣言更快:

string[][] contacts; 

实例化:

string[][] contacts = new string[2][]; 
for (int i = 0; i < contacts.Length; i++) 
{ 
    contacts[i] = new string[3]; 
} 

初始化:

string[][] contacts = new string[2][] { new string[] {"[email protected]","[email protected]"}, new string[] {"[email protected]","[email protected]","[email protected]"} }; 
+0

看看我如何编辑你的答案,你将学习如何插入链接... – aleroot

string[][]作为jagged array

交错数组是数组,其元素是阵列。交错数组的元素可以具有不同的尺寸和大小。锯齿状排列有时称为“阵列阵列”。

string[,]multidimensional array其中

阵列可以具有多于一个维度

string[][](铁血阵列)是阵列的阵列具有固定数量的行和列的可变长度而string[,](矩形阵列)是具有固定行数和列数的矩阵。这是一个很好的讨论over there差异

两个方面很重要:

内存明智:

[N,M] - 保存为一长串的记忆,仿佛这是[ n * m] [n] [m] - 保存为大小为n的简单数组,其中每个元素都是指向大小为m的数组的指针。

接入明智:

[N,M] - 要访问单元I,J真正发生的是,它需要的[n * m个]数组的指针和由N *宽度抵消它+ m,然后访问该值。 [n] [m] - 要访问单元格i,j,您只需访问索引n(偏移量为#1)处的子数组指针,然后访问索引为m(偏移量为#1)的子数组。

[] []在两方面都较好。访问效率更高,内存更灵活。 此外,您可以只访问一行并更有效地处理它,因为您不对该行中的每个单元格执行完整的多维访问。

然而,有一个[,]的优点:你总是知道矩阵的宽度是固定的。使用[] [],每个子数组可以有不同的长度,甚至可以为空。这可以被认为是一种优势,但有时候反过来也是有用的。