我需要将short []转换为对象[]。原因是需要我在相同的成员变量中存储short []或char [],具体取决于另一个属性。我使用的类是用C++/CLI编写的,并使用C#。 C++/CLI属性是将C#short []转换为对象[]
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()
。但我想有一个更高性能的解决方案,所以也许有一种方法可以为这个属性使用另一个基础数据类型?
“一个短[]或一个char []在同一个成员变量,根据另一个属性” - 为什么?这听起来像是一个X/Y问题。 C#中的属性是免费的,并且C#还支持''StructLayout]''类似'union'结构。 – Dai
“或者有更好的解决方案,不要使用'cli :: array
没有转换,数组内容在内存中物理上不同。它从每个元素4个或8个字节(取决于位数)折叠为2或1.因此,您必须*复制。如果性能很重要,则一系列盒装值不属于您的功能列表。 –