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

c# – 这个“Object [*]”是什么类型,我用COM互操作?

发布时间:2020-12-15 06:49:39 所属栏目:百科 来源:网络整理
导读:我做C#excel互操作.我从C#调用宏,我期望对象的数组.我可以从返回二维数组的宏中获取二维数组的对象. 但是,另一个(第三方)宏应该返回一维数组.我不能得到(object [])xlApp.Run(…)工作(它抛出异常),调试器中的类型信息表示结果是Object [*]类型.来自异常的实
我做C#excel互操作.我从C#调用宏,我期望对象的数组.我可以从返回二维数组的宏中获取二维数组的对象.

但是,另一个(第三方)宏应该返回一维数组.我不能得到(object [])xlApp.Run(…)工作(它抛出异常),调试器中的类型信息表示结果是Object [*]类型.来自异常的实际消息是

Unable to cast object of type 'System.Object[*]' to type 'System.Object[]'.

这个Object [*]类型是什么,如何从中检索一维数组?

编辑:对我来说,这可能意味着一个变数的安慰.但是,然后出现两个问题:为什么一切都可以与二维数组?如何将SAFEARRAY转换为C#数组?

解决方法

我对你的问题发表了各种各样的文章:

OPCFondation :基本上而不是将其声明为一个对象数组,您可以将其声明为Array而不提供任何元素类型.所以不要在Object []或Array中投射,并使用foreach循环来使用子阵列.

foreach(object subobject in (Array)myarrayitem)
{
   //do stuff with the subobject,even browse further
}

这个解决方案似乎工作,因为你可以再次找到here.

On StackOverflow:他们讲下边界的数组> 0,它给你的对象[*]类型,一些链接可以是有趣的主题,但我认为第一个想法是好的.

(编辑:李大同)

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

    推荐文章
      热点阅读