MemoryStream.Capacity与MemoryStream.Length的数据类型

Bob*_*son 6 .net c# memorystream

今天我发现MemoryStream课堂上有些奇怪.该.Length物业是一个long,但 .Capacity财产,应该可能永远>= .Length只是一个int.

我知道,如果长度超过可能的容量需要超过1 GB的流,但这对我来说似乎很奇怪. Length不能改变,因为它是继承的Stream,但为什么不做Capacity一个long呢?碰巧的能力,如果你MemoryStream超过int.MaxValue长?

Sri*_*vel 8

不,MemoryStream.Capacity不能超过int.MaxValue因为内存流是由一个byte[]数组最大长度int.MaxValue支持.

然而,Stream.Length就是long,这是有道理的,因为流可以是任何东西,例如FileStream.Length可以大于int.MaxValue无疑.