gpt4 book ai didi

c# - 为什么 MemoryStream 不提供采用 "long"容量的构造函数?

转载 作者:太空狗 更新时间:2023-10-29 23:06:30 26 4
gpt4 key购买 nike

根据 .NET MemoryStream - Should I set the capacity? , 最好设置一个 MemoryStream 的初始容量如果你事先知道的话。

在我的代码中,我收到(来自第三方库)一个 Stream目的。此 Stream 包含在 GetObjectResponse 类中。

由于这个类会在交易结束后被销毁,所以我需要复制接收到的流,以便之后继续使用它。

Stream 类公开了一个 Length属性来确定流的长度,因此作为开始复制过程的第一步,我开始写:

Stream destination = new MemoryStream(response.ResponseStream.Length);

但是编译器会抛出一个错误,说明 MemoryStream 没有采用 long 参数,而是采用 int

他们为什么要这样做?

如果 MemoryStream 扩展自 Stream,这意味着它可以有一个很长的 Length。如果它可以有一个 long 大小,为什么它不能有一个 long 初始容量?

我试图避免在没有容量的情况下初始化流,因为我想利用我知道流将有多大的事实,但构造函数似乎限制了这个愿望。

我该如何解决这个问题,为什么 MemoryStream 不能占用 long 容量?

最佳答案

MemoryStream 目前不支持超过 2GB 的数据。这是当前的限制。原则上不必存在。

这只是(尚未)实现的功能的一个例子。

在当前的 CLR 上实现更大的流很困难,它只支持最多包含 int.MaxValue 元素的数组。

关于c# - 为什么 MemoryStream 不提供采用 "long"容量的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32587507/

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