是否有理由System.Buffer.BlockCopy
接受int
参数而不是long
副本的偏移量/长度?流通常与 一起使用long
,为什么BlockCopy
也不会有需要的重载long
?
问问题
990 次
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 回答