C#阵列 - 字符串[] []对字符串[,]
可能重复:
What is differences between Multidimensional array and Array of Arrays in C#?C#阵列 - 字符串[] []对字符串[,]
任何人都可以解释我string[][]
和string[,]
之间的区别?
string[,]
是multidimensional array。
string[][]
是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]"} };
string[][]
作为jagged array
交错数组是数组,其元素是阵列。交错数组的元素可以具有不同的尺寸和大小。锯齿状排列有时称为“阵列阵列”。
而string[,]
是multidimensional array其中
阵列可以具有多于一个维度
两个方面很重要:
内存明智:
[N,M] - 保存为一长串的记忆,仿佛这是[ n * m] [n] [m] - 保存为大小为n的简单数组,其中每个元素都是指向大小为m的数组的指针。
接入明智:
[N,M] - 要访问单元I,J真正发生的是,它需要的[n * m个]数组的指针和由N *宽度抵消它+ m,然后访问该值。 [n] [m] - 要访问单元格i,j,您只需访问索引n(偏移量为#1)处的子数组指针,然后访问索引为m(偏移量为#1)的子数组。
[] []在两方面都较好。访问效率更高,内存更灵活。 此外,您可以只访问一行并更有效地处理它,因为您不对该行中的每个单元格执行完整的多维访问。
然而,有一个[,]的优点:你总是知道矩阵的宽度是固定的。使用[] [],每个子数组可以有不同的长度,甚至可以为空。这可以被认为是一种优势,但有时候反过来也是有用的。
看看我如何编辑你的答案,你将学习如何插入链接... – aleroot