将 C# short[] 转换为对象[]

Convert C# short[] to an object[]

我需要将短[] 转换为对象[]。原因是我需要在同一个成员变量中存储一个 short[] 或一个 char[],这取决于另一个 属性。我使用的 class 是用 C++/CLI 编写的,并从 C# 中使用。 C++/CLI 属性 是

property cli::array<Object^>^ Data {
    cli::array<Object^>^ get();
    void set(cli::array<Object^>^ d);
}

有人知道如何将 short[] 或 char[] 转换为 object[] 吗?或者是否有更好的解决方案不使用 cli::array<Object^>^ 作为基本数据类型?


更新: 我知道我可以遍历所有这些项目并将其转换为对象或使用 Linq 方法 shortArr.Cast<object>().ToArray()。但我想要一个性能更高的解决方案,所以也许有一种方法可以为此使用另一种基本数据类型 属性?

不,您必须遍历所有项目。

C#中,需要装箱才能将ValueType存储到object变量中,因此数组中的所有short值都必须装箱才能设置为object[] 逐一排列。

object[] 用于 char[]short[] 是一种浪费,无论是内存还是 CPU 周期。

由于 char[]short[] 都扩展了 Array,您可以将这两种数组存储在类型 Array^ 的变量中,然后转换为所需的类型根据需要。