我想通过调用在c#中创建一个非零下限一维数组
Array.CreateInstance(typeof(int),new int[] { length },new int[] { lower });
返回的数组的类型不是int [],而是int [*].谁能详细说明这是什么意思?我想要能够将这个数组返回给调用者,例如,
int[] GetArray() { ... }
谢谢.
解决方法
是的,这是一个骗子!
矢量和一维数组之间有区别. int []是一个向量.向量(如int [])必须为0.否则,你必须调用它Array.例如:
// and yes,this is doing it the hard way,to show a point... int[] arr1 = (int[]) Array.CreateInstance(typeof(int),length);
或者(指出这还是以零为基础):
int[] arr2 = (int[]) Array.CreateInstance(typeof (int),new int[] {length},new int[] {0});
如果你的数组不能是0,那么抱歉:你必须使用Array,而不是int []:
Array arr3 = Array.CreateInstance(typeof(int),new int[] { lower });
为了使它更加混乱,有以下区别:
typeof(int).MakeArrayType() // a vector,aka int[] typeof(int).MakeArrayType(1) // a 1-d array,**not** a vector,aka int[*]