今天我注意到 MemoryStream
类有些奇怪。 .Length
属性是一个 long
,但是 .Capacity
属性,大概应该总是 >= .Length
只是一个 int
。
我知道长度超过可能的容量需要超过 GB 的流,但这对我来说似乎很奇怪。 Length
不能更改,因为它是从 Stream
继承的,但为什么不将 Capacity
也设为 long
呢?如果 MemoryStream
的长度超过 int.MaxValue
,容量会发生什么变化?
最佳答案
不, MemoryStream.Capacity
不能超过 int.MaxValue
因为内存流由 byte[]
和 arrays maximum length is int.MaxValue
支持。
但是, Stream.Length
是 long
,这是有道理的,因为流可以是任何东西,例如 FileStream.Length
无疑可以大于 int.MaxValue
。
关于c# - MemoryStream.Capacity 与 MemoryStream.Length 的数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27112697/