对于一个MemoryStream一个byte []缓冲区,具有可变大小? [英] Can a byte[] buffer for a MemoryStream have variable size?

查看:1005
本文介绍了对于一个MemoryStream一个byte []缓冲区,具有可变大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我序列化对象到字节[] 使用的MemoryStream

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



有什么办法,我可以设置序列化来根据 stuffToSerialize

推荐答案

该参数的构造函数新的MemoryStream()使用一个。

The parameterless constructor new MemoryStream() uses one.

然后连载了进去,然后当你需要的字节[] 通话 ToArray的()它创建任何缓冲区的长度实际上是用复印件(内部缓冲器一般在任何时候一些成长的空间,而这通常不理想, ToArray的()给你什么,你真正关心的)。

Then serialise into it, and then when you need the byte[] call ToArray() which creates a copy of whatever length of the buffer was actually used (the internal buffer will generally have some growing space at any point, and that's normally not desirable, ToArray() gives you what you actually care about).

在下面的代码的末尾,就会产生同样的效果作为你的代码,是你能预测正确的大小:

At the end of the following code, it will have the same effect as your code, were you able to predict the correct size:

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();
}

这篇关于对于一个MemoryStream一个byte []缓冲区,具有可变大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆