3

オブジェクトをbyte[]usingにシリアル化していますMemoryStream:

byte[] serialized = new byte[1000];
using (MemoryStream stream = new MemoryStream(serialized))
    using (TextWriter textWriter = new StreamWriter(stream))
        serializer.Serialize(textWriter, stuffToSerialize);

'serialized'のサイズに応じて成長するように設定する方法はありstuffToSerializeますか?

4

2 に答える 2

4

提供された既存のバッファーを受け取るコンストラクターを使用する場合は、byte[]割り当てられた配列は固定サイズであるため、いいえ。

デフォルトのコンストラクターは、パラメーターを受け入れない他のコンストラクターと同様に、byte[]必要に応じて既存のバッファーをより大きなバッファーに置き換えます。を使用すると事態が複雑になる可能性があることに注意してくださいGetBuffer()。GetBuffer() を呼び出した後にストリームが追加されるとbyte[]、ストリームの実際のバッキングが置き換えられる可能性があります。GetBuffer()また、 を呼び出す場合、ストリーム データは返された配列のインデックス 0 から開始しない場合があることに注意してください。

コンテンツを元に戻すには、 を使用ToArray()してバイト配列として取得するか、のコンテンツを別のストリームWriteTo(Stream)に注ぎます。MemoryStream

于 2012-09-06T22:12:38.247 に答える