我正在使用 MemoryStream
将对象序列化为 byte[]
:
byte[] serialized = new byte[1000];
using (MemoryStream stream = new MemoryStream(serialized))
using (TextWriter textWriter = new StreamWriter(stream))
serializer.Serialize(textWriter, stuffToSerialize);
有什么方法可以设置'serialized'
根据stuffToSerialize
的大小增长吗?
最佳答案
无参数构造函数 new MemoryStream()
使用一个。
然后将其序列化,然后当您需要 byte[]
调用 ToArray()
时,它会创建实际使用的任何长度缓冲区的副本(内部缓冲区通常在任何时候都会有一些不断增长的空间,这通常是不可取的,ToArray()
为您提供了您真正关心的内容。
在以下代码的末尾,如果您能够预测正确的尺寸,它将具有与您的代码相同的效果:
byte[] serialized;
using (MemoryStream stream = new MemoryStream())
{
using (TextWriter textWriter = new StreamWriter(stream))
{
serializer.Serialize(textWriter, stuffToSerialize);
}
// Note: you can even call stream.Close here is you are paranoid enough
// - ToArray/GetBuffer work on disposed MemoryStream objects.
serialized = stream.ToArray();
}
关于c# - MemoryStream 的 byte[] 缓冲区可以有可变大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309107/