有人可以告诉我如何在Windows Mobile下使用C#将byte []转换为ArrayList?

稍后编辑:

  1. 这就像拥有一个包含自定义类型实例的ArrayList一样。此列表作为字节数组转发到数据库(转换为blob)(转换由数据库API完成);我想要的是将byte []还原为ArrayList;

  2. .NET CF不提供BinaryFormatter;

有帮助吗?

解决方案

所有数组都继承ICollection,因此您只需使用

即可
ArrayList list = new ArrayList(bytearray);

虽然我会使用通用List <!> lt; byte <!> gt;我使用相同的方法,因为这可以防止数组中每个字节值的装箱。虽然数组不会静态地继承相应类型的通用IList,但CLR会在运行时向每个数组实例添加相关实现(请参阅重要说明这里

其他提示

你不能这样做吗?

ArrayList list = new ArrayList(byteArray);

ArrayList是无类型的,只应用于兼容性。

我建议你使用List <!> lt; byte <!> gt;:

var list = new List<byte>(byteArray);

编辑:如果数据库API进行转换,它不应该提供反序列化的方法吗?尝试使用Reflector了解转换的方式。

CF似乎不支持BinaryFormatter。您是否控制发送该二进制数据的组件?你不能将数据转换为该组件中的Xml吗?如果没有看一下 Compact Formatter

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top