1

Visual Studio 2010 C# の下に Windows アプリケーションがあります。

book3 つのフィールド ( namewritingDateauthor)を持つ名前のクラスを作成します。

( )bookのリストである名前で別のクラスを作成しますbookList<book>

クラスデータを取得するとき、そのサイズをバイト単位でbooks知る必要があります

どうやってやるの?

注:試してみMarshal.SizeOf(books)ましたが、このエラーが発生しました

"Type 'System.Collections.Generic.List`1[books]' cannot be marshaled as 
an unmanaged structure; no meaningful size or offset can be computed."

助けはありますか?

4

1 に答える 1

6

リストのサイズをバイト単位で取得する良い方法はありません。主な質問は-あなたは何のためのサイズが必要ですか?メモリ消費が心配ですか?リストをどこかに転送するときにネットワーク帯域幅が心配ですか?

メモリ消費が気になる場合は、おそらく何百万もの本のエントリがあります。その場合、ロード時間は他の何よりもはるかに重要であると予想されるので、リストを部分的にロードして、メモリの問題を完全に修正することができます。

ネットワーク帯域幅の場合は、リストをシリアル化する(基本的にはバイトのストリームに変換する)必要があります。そうすれば、ストリームの長さを知ることができます。ストリーミングするときは、文字列の文字エンコードを(おそらく暗黙的に)選択します。これはおそらくここで最も重要な要素です。

于 2012-12-31T06:58:50.720 に答える