今天我注意到 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.Lengthlong ,这是有道理的,因为流可以是任何东西,例如 FileStream.Length 无疑可以大于 int.MaxValue

关于c# - MemoryStream.Capacity 与 MemoryStream.Length 的数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27112697/

10-16 09:00