加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#:Array.CreateInstance:无法将类型为[*]的对象转换为键入[]

发布时间:2020-12-15 04:08:54 所属栏目:百科 来源:网络整理
导读:我想通过调用在c#中创建一个非零下限一维数组 Array.CreateInstance(typeof(int),new int[] { length },new int[] { lower }); 返回的数组的类型不是int [],而是int [*].谁能详细说明这是什么意思?我想要能够将这个数组返回给调用者,例如, int[] GetArray()
我想通过调用在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[*]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读