2

是否有理由System.Buffer.BlockCopy接受int参数而不是long副本的偏移量/长度?流通常与 一起使用long,为什么BlockCopy也不会有需要的重载long

4

1 回答 1

4

因为在 .NET 4.5 之前,任何对象都不能超过 2 GB。所以没有理由有超过一个 int 来表示长度。

即使在 .NET 4.5 中,虽然数组的长度可以超过 2 GB,但它不能超过 2^31 个项目。所以 a 的最大大小byte[]仍然是 2 GB(减去一点开销)。an 的最大大小int[]为 2^31 个项目或大约 8 GB 等。请参阅gcAllowVeryLargObjects

于 2013-03-18T21:54:23.517 回答