4

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

后期编辑:

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

  2. .NET CF 不提供 BinaryFormatter;

4

4 回答 4

13

所有数组都继承了 ICollection,所以你可以使用

ArrayList list = new ArrayList(bytearray);

尽管我自己会使用相同的方法使用通用 List<byte> ,因为这样可以防止对数组中的每个字节值进行装箱。尽管数组不会静态继承相应类型的泛型 IList,但 CLR 在运行时为每个数组实例添加相关实现(请参阅此处的重要说明)

于 2009-09-16T15:09:11.457 回答
3

你不能这样做吗?

ArrayList list = new ArrayList(byteArray);
于 2009-09-16T15:09:27.200 回答
2

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

我建议你使用 List<byte>:

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

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

于 2009-09-16T15:10:22.097 回答
0

好像 CF 不支持BinaryFormatter. 您是否控制发送该二进制数据的组件?您不能在该组件中将数据转换为 Xml 吗?如果不看看Compact Formatter

于 2009-09-16T15:14:45.800 回答