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

前端之家收集整理的这篇文章主要介绍了c# – 这个“Object [*]”是什么类型,我用COM互操作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我做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,它给你的对象[*]类型,一些链接可以是有趣的主题,但我认为第一个想法是好的.

猜你在找的C#相关文章