gpt4 book ai didi

c# - 重用内存流

转载 作者:IT王子 更新时间:2023-10-29 04:29:18 25 4
gpt4 key购买 nike

假设我已经使用这个将字节缓冲区复制到内存流中

memoryStream.Read(data, 0, data.Length);

有什么方法可以让我清空流并重新使用它来读取其他数据吗?

我想避免创建许多 MemoryStream 对象并且更喜欢使用一个实例,在使用之间重置它

最佳答案

您可以通过将 Position 设置为 0 并将 Length 设置为 0 来重新使用 MemoryStream。

MemoryStream ms = new MemoryStream();

// Do some stuff with the stream

// Reset the stream so you can re-use it
ms.Position = 0; // Not actually needed, SetLength(0) will reset the Position anyway
ms.SetLength(0);

// Do some more stuff with the stream

通过将长度设置为 0,您不会清除现有缓冲区,它只会重置内部计数器。因此,现有的缓冲区分配保持不变,但所有使用了多少缓冲区的簿记都被重置,以便您可以重新使用它。

更新:我只是快速浏览了 SetLength 的代码实现,如果您将长度设置为 0,则 Position 将自动重置为 0,因此您甚至不需要显式设置Position 属性,只需重置长度就足够了。

关于c# - 重用内存流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5769494/

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