对于副本的偏移/长度,System.Buffer.BlockCopy
是否需要int
参数而不是long
?流通常与long
一起使用,为什么BlockCopy
也没有带long
的重载?
答案 0 :(得分:3)
因为在.NET 4.5之前,没有对象可能超过2千兆字节。因此,没有理由使用int来表示长度。
即使在.NET 4.5中,虽然数组的长度可以超过2千兆字节,但它不能超过2 ^ 31项。因此byte[]
的最大大小仍为2千兆字节(减去一点开销)。 int[]
的最大尺寸为2 ^ 31项或约8千兆字节等。请参阅gcAllowVeryLargObjects。