gpt4 book ai didi

c# - MemoryStream 的 byte[] 缓冲区可以有可变大小吗?

转载 作者:行者123 更新时间:2023-11-30 19:11:15 27 4
gpt4 key购买 nike

我正在使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com