对于多维数组,Array.CreateInstance可以用于创建非零索引的数组,但是如果您尝试使用一维数组(向量),例如:
public double[] myArray = (double[])Array.CreateInstance(typeof(double),new int[1] { 12 },new int[1] { 1 });
当从多维数组到单维阵列的转换失败时,这将在运行时失败
"Unable to cast object of type 'System.Double[*]' to type 'System.Double[]'"
现在我可以创建一个基于零的数组,忽略第一个值,或使用偏移等,但是我忽略了一些允许非零向量的c#语法魔法?
更新:
如果他说“There’s no obvious way to make a non-zero-based array in C#”,我会采取Eric Lippert的话
解决方法
C#中的所有数组都是零.据我所知,没有办法创建一个基于1的数组.想像一下,如果有可能会发生什么样的混乱.这是一个类似的线程,解释了更多细节的问题 –
C#: Nonzero-based arrays are not CLS-compliant