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 に変換できませんか? そうでない場合は、コンパクトフォーマッターを見てください

于 2009-09-16T15:14:45.800 に答える