基于非零的multidimensional array
我使用Interopt.Excel
API从电子表格中提取单元格。 当我打电话时:
object[,] rangeValues = (object[,])range.get_Value(XlRangeValueDataType.xlRangeValueDefault);
并设置一个断点并检查rangeValues
,我看到从[1,1]“foo”,[1,2]“bar”等元素开始
但是,如果我做string[,] test = new string[2, 2] { { "one", "two" }, { "three", "four" } };
元素从[0,0]开始。 Excel API如何构造具有空元素的multidimensional array? 我试图添加null,但你仍然有一个[0,0]条目。 他们的对象没有显示出来。
CLR支持非零的数组。 他们混淆和避免。 我相信,COM互操作编组可以创build它们。
http://msdn.microsoft.com/en-us/magazine/cc301755.aspx
通用语言规范(CLS)兼容性要求所有的数组都是从零开始的。 这允许用C#编写的方法创build一个数组,并将该数组的引用传递给以另一种语言(如VisualBasic®)编写的代码。 另外,由于基于零的arrays是最常见的,Microsoft已经花了很多时间来优化其性能。 但是,CLR确实支持非零数组,但他们不鼓励。 对于那些不关心性能和跨语言可移植性的人,我将演示如何在本节后面介绍如何创build和使用非基于零的数组。
这是我第一次看到真实代码中的一个。
显然,multidimensional array无论是否为零,都具有相同的types。 一维的有不同的types。 有意义的,因为如果他们有相同的typesJIT总是会产生一般情况下慢代码。