байт [] в ArrayList? - PullRequest
       22

байт [] в ArrayList?

4 голосов
/ 16 сентября 2009

Может кто-нибудь сказать мне, как я могу преобразовать byte [] в ArrayList с помощью C # под Windows Mobile?

Позднее редактировать:

  1. это будет похоже на ArrayList, содержащий экземпляры пользовательского типа. Этот список попадает в базу данных (в большой двоичный объект) в виде байтового массива (преобразование выполняется API базы данных); Я хочу вернуть байт [] в ArrayList;

  2. .NET CF не предоставляет двоичный формат;

Ответы [ 4 ]

13 голосов
/ 16 сентября 2009

Все массивы наследуются от ICollection, поэтому вы можете просто использовать

ArrayList list = new ArrayList(bytearray);

хотя я сам использовал бы общий список , используя тот же метод, поскольку это предотвращает упаковку каждого байтового значения в массиве. Хотя массивы не наследуются статически от общего IList для соответствующего типа, CLR добавляет соответствующие реализации к каждому экземпляру массива во время выполнения (см. Важное примечание здесь )

3 голосов
/ 16 сентября 2009

Разве вы не можете просто сделать это?

ArrayList list = new ArrayList(byteArray);
2 голосов
/ 16 сентября 2009

ArrayList не типизирован и должен использоваться только для совместимости.

Я предлагаю вам использовать список :

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

Редактировать: Если API базы данных выполняет преобразование, не должно ли это обеспечить способ десериализации? Попробуйте использовать Reflector, чтобы узнать, как происходит преобразование.

0 голосов
/ 16 сентября 2009

Кажется, CF не поддерживает BinaryFormatter. Контролируете ли вы компонент, который отправляет эти двоичные данные? Разве вы не можете преобразовать данные в XML в этом компоненте? Если нет, взгляните на Compact Formatter

...