可能重复:
无法将值类型数组转换为参数对象 []
为什么是
object h = new byte();
可能和
object[] h = new byte[5];
不是?
如何将字节数组转换为对象数组?
谢谢你!
可能重复:
无法将值类型数组转换为参数对象 []
为什么是
object h = new byte();
可能和
object[] h = new byte[5];
不是?
如何将字节数组转换为对象数组?
谢谢你!
第一个示例将单个值框起来。
在第二个示例中,您尝试转换整个数组。那是行不通的。object
数组的每个元素都是一个object
变量。byte
数组的每个元素都是一个byte
变量。他们不分享代表 - 你就是做不到。
您可以很容易地从字节数组创建一个新的对象数组,例如
object[] objects = bytes.Cast<object>().ToArray();
...但是您不能将字节数组视为对象数组。
或者,您可以使用与System.Array
兼容的类型byte[]
。这对你有帮助吗?
byte[] bytes = ...;
Array array = bytes;
当您尝试在代码中转换数组时,转换失败,因为您将保存类型字节的数组转换为保存类型对象的数组;数组持有的类型不一样。当您将值类型转换为类型对象时,您就是在装箱(拆箱将对象转换为值类型)。object h = new byte();
是拳击。当您在数组代码中进行强制转换时,这不是装箱,这就是它失败的原因。