c# - 如何将 System.Object[*] 转换为 System.Object[]

标签 c# interop casting visual-foxpro

当我尝试将 VFP9 语言 COM/DLL 中的 Array 返回到我的 .NET C# 项目时 我收到一个 System.Object[*] 数组,但我无法转换为 System.Object[](没有星号)。

最佳答案

Timwi 的解决方案应该可以正常工作。您可以使用 Linq 做一些更简单的事情:

object[] newArray = sourceArray.Cast<object>().ToArray();

如果您需要重新创建一个 System.Object[*] 以将其传递回 VFP,您可以使用 this overload Array.CreateInstance 方法:

public static Array CreateInstance(
    Type elementType,
    int[] lengths,
    int[] lowerBounds
)

您可以按如下方式使用它:

object[] normalArray = ...

// create array with lower bound of 1
Array arrayStartingAt1 =
    Array.CreateInstance(
        typeof(object),
        new[] { normalArray.Length },
        new[] { 1 });

Array.Copy(normalArray, 0, arrayStartingAt1, 1, normalArray.Length);

关于c# - 如何将 System.Object[*] 转换为 System.Object[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3731287/

相关文章:

c# - 在 VB.NET/C# 中调用泛型函数

c++ - 无法从 C 应用程序访问 C++ DLL 中的变量

c - C 中的指针转换

java - 使用 clojure 生成 java bean

.net - 为什么 F# 不支持使用类型缩写扩展系统类型?

php - 在 PHP 中将字符串转换为整数的最快方法

c# - c#矩阵中最大的点

c# - 如何将多个文件压缩到文件夹中直到满足条件?

c# - 未找到自定义 Visual C++ CRL 程序集

F# 和 COM api 向下转换问题