3

可能重复:
无法将值类型数组转换为参数对象 []

为什么是

object h = new byte();

可能和

object[] h = new byte[5];

不是?

如何将字节数组转换为对象数组?

谢谢你!

4

2 回答 2

8

第一个示例将单个值框起来。

在第二个示例中,您尝试转换整个数组。那是行不通的。object数组的每个元素都是一个object变量。byte数组的每个元素都是一个byte变量。他们不分享代表 - 你就是做不到。

您可以很容易地从字节数组创建一个新的对象数组,例如

object[] objects = bytes.Cast<object>().ToArray();

...但是您不能将字节数组视为对象数组。

或者,您可以使用与System.Array兼容的类型byte[]。这对你有帮助吗?

byte[] bytes = ...;
Array array = bytes;
于 2012-11-08T00:02:29.290 回答
2

当您尝试在代码中转换数组时,转换失败,因为您将保存类型字节的数组转换为保存类型对象的数组;数组持有的类型不一样。当您将值类型转换为类型对象时,您就是在装箱(拆箱将对象转换为值类型)。object h = new byte();是拳击。当您在数组代码中进行强制转换时,这不是装箱,这就是它失败的原因。

于 2012-11-08T00:04:29.300 回答