为什么System.Buffer.BlockCopy采用int而不是long?

时间:2013-03-18 21:45:07

标签: c#-4.0 stream

对于副本的偏移/长度,System.Buffer.BlockCopy是否需要int参数而不是long?流通常与long一起使用,为什么BlockCopy也没有带long的重载?

1 个答案:

答案 0 :(得分:3)

因为在.NET 4.5之前,没有对象可能超过2千兆字节。因此,没有理由使用int来表示长度。

即使在.NET 4.5中,虽然数组的长度可以超过2千兆字节,但它不能超过2 ^ 31项。因此byte[]的最大大小仍为2千兆字节(减去一点开销)。 int[]的最大尺寸为2 ^ 31项或约8千兆字节等。请参阅gcAllowVeryLargObjects