【问题标题】:C# What is a type of System.Object[*]? [duplicate]C# System.Object[*] 的类型是什么? [复制]
【发布时间】:2014-11-11 16:52:25
【问题描述】:

我有一个带有函数的 COM DLL,它应该返回一个类型的对象数组,该类型依赖于传入的参数。

我知道返回类型应该是什么,但是返回的是 System.Object[*] 类型

尽管进行了搜索,但我不知道如何将其转换为有用的东西。简单地尝试转换为应该是“someType[]”的类型失败,也转换为 System.Object[] 失败。在 C# 的上下文中,* 是什么意思?

【问题讨论】:

  • 请在上下文中显示。 C# 或 C++。
  • 从未见过,除非* 表示dynamic。显示屏幕截图。
  • 您发布了一段无效的代码,请详细说明。您的来源(文档)是什么?
  • 这是一个不一致的数组,它的下限不是从 0 开始的。在 COM 中并不罕见,下一个最受欢迎的选择是 1。你必须使用 Array 类来访问数组。使用其 GetLower/UpperBound() 方法发现有效索引,使用 GetValue() 检索元素。
  • @HansPassant 是对的。我猜我不能接受评论作为答案?

标签: c# .net


【解决方案1】:

我假设您的意思是转换为 System.Object[] 编译时失败。尝试以这种方式投射:

someType[] myObj = (someType[]) (System.Object) theDllObj.theDllCall();

这是我在编译器脾气暴躁时多次使用的通过对象转换的技巧。

【讨论】:

  • 那么* 在哪里?
  • 这是一个重要的假设。先问 OP :)
  • 实际上它在运行时失败了。引发异常。不过有趣的技巧,我会试一试。
  • 改为强制转换为 someType[],这是 OP 想要的数组类型。我试图避免/忽略奇怪的 Object[*] 返回类型
  • 啊..如果运行时失败,这可能不起作用...
猜你喜欢
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 2019-01-16
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
相关资源
最近更新 更多