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

时间:2016-05-13 09:48:54

标签: .net c++-cli

我需要将short []转换为对象[]。原因是我需要在同一个成员变量中存储short []或char [],具体取决于另一个属性。我使用的类是用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()。但我希望有一个更高性能的解决方案,所以也许有一种方法可以为这个属性使用另一种基本数据类型?

2 个答案:

答案 0 :(得分:2)

object[]char[]使用short[]在内存和CPU周期方面都是浪费。

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

答案 1 :(得分:1)

不,你必须完成所有项目。

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