isp*_*iro 2 c# serialization memorystream base-class-library
我正在将一个对象序列化为一个byte[]使用MemoryStream:
byte[] serialized = new byte[1000];
using (MemoryStream stream = new MemoryStream(serialized))
using (TextWriter textWriter = new StreamWriter(stream))
serializer.Serialize(textWriter, stuffToSerialize);
Run Code Online (Sandbox Code Playgroud)
有什么方法可以'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();
}
Run Code Online (Sandbox Code Playgroud)