【发布时间】:2015-09-15 13:34:19
【问题描述】:
根据.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 容量?
【问题讨论】: