日期:2014-05-17  浏览次数:20795 次

关于交错数组和二维数组
想请教各位一下,每个数组的元素个数相同的交错数组和二维数组一样吗?

------解决方案--------------------
引用:
Quote: 引用:

当然不一样,因为交错数组的第一层,保存的是数组对象的引用
正因为这样,你才可以将一个长度不同的数组传给交错数组,同时不用搬动其它元素。

而二维数组的本质和一维数组一样,连续存储,可以直接寻址。

看这个:
int[][] arr1 = new int[][] { new int[] { 1, 2 }, new int[] { 3, 4 }, new int[] { 5, 6 } };
int[,] arr2 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
arr1[1] = new int[] { 1, 2, 3, 4 };

还是不明白啊,用c语言二维数组写的程序能不作改变地在C#里用交错数组完成吗?

不建议使用交错数组,在二进制兼容性上,交错数组和二维数组不兼容,在性能上,交错数组无法直接对第二维下标的数据直接寻址,在用法上,交错数组允许不同长度的二维数组混编,且无法一次性初始化,编译器无法检查你的不正确用法。
------解决方案--------------------
交错数据没有二维的概念,它就是普通的数组向量,只不过每一个数组单元是另一个数组而已。

许多语言没有二维数组,例如标准c语言,c语言的“二维数组”其实就是交错数组,而不是c#所说的二维数组。