在Java中,没有矩形数组,只有一种制作多维数组的方法,例如:int[][] a = new int[10][10];
。
在C#中,您无法做到这一点,只能使用矩形数组int[,] a = new int[10,10];
或必须编写此怪诞符号
new int[10][] {new int[10], new int[10],new int[10],new int[10],new int[10],new int[10],new int[10],new int[10],new int[10],new int[10]}
。
但是,矩形数组在访问它们的元素时速度较慢,所以,我的问题是,矩形数组的优点是什么?为什么C#语言开发人员不只采用Java方法?
我知道矩形数组的内存将在一个连续的块中分配,但是我也不明白这样做的好处。
答案 0 :(得分:1)
.NET本身支持矩形和锯齿状数组。是否公开用于这两个概念之一或全部的简单语法 1 。
Visual Basic(经典)支持矩形数组,但不支持锯齿状数组的一流。
在早期的C#中,可以预料到很多代码可以使用矩形数组与VB代码进行互操作(或者,就像汉斯已经评论过的那样,通常是COM),或者可以从VB进行代码转换。因此,您希望C#轻松地支持这样的数组。
老实说,我们不应该纯粹根据我们认为绝对“表现最佳”的数据结构来选择数据结构。通常,还有许多其他决定会导致我们朝着锯齿状阵列的方向选择矩形阵列。即知道我们真正拥有的代表矩形数据集可以使我们自己的逻辑更简单。在非关键路径上更简单地推理算法通常会带来很大的好处。
这些天来,如果我们自己不实现集合类,那么无论如何我们都不应该首先查看数组。
1 类似地,它公开了一个下界不是0
的数组。在C#中没有简单的语法。