将 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^
的变量中,然后转换为所需的类型根据需要。
我需要将短[] 转换为对象[]。原因是我需要在同一个成员变量中存储一个 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^
的变量中,然后转换为所需的类型根据需要。