将字节数组转换为对象数组

时间:2012-11-07 23:57:28

标签: c# c#-4.0

  

可能重复:
  Can’t convert value type array to params object[]

为什么

object h = new byte();

可能和

object[] h = new byte[5];

不是吗?

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

谢谢!

2 个答案:

答案 0 :(得分:8)

第一个示例选中单值

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

您可以轻松地从字节数组创建 new 对象数组,例如

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

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

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

byte[] bytes = ...;
Array array = bytes;

答案 1 :(得分:2)

当您尝试在代码中强制转换数组时,强制转换失败,因为您正在将类型为byte的数组转换为包含类型对象的数组;数组所包含的类型不一样。当您将值类型转换为类型对象时,您正在装箱(取消装箱将对象转换为值类型)。 object h = new byte();是拳击。当您在数组代码中进行强制转换时,这不是装箱,这就是它失败的原因。