为什么
object h = new byte();
可能和
object[] h = new byte[5];
不是吗?
如何将字节数组转换为对象数组?
谢谢!
答案 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();
是拳击。当您在数组代码中进行强制转换时,这不是装箱,这就是它失败的原因。