为什么System.Buffer.BlockCopy需要int而不是long



是否有原因System.Buffer.BlockCopy采用int参数而不是long用于副本的偏移量/长度?流通常与long一起工作,为什么BlockCopy也没有超载long呢?

因为在。net 4.5之前,任何对象都不能超过2gb。因此,没有理由使用超过一个int来表示长度。

即使在。net 4.5中,尽管数组的长度可以超过2gb,但它的元素不能超过2^31个。因此,byte[]的最大大小仍然是2 gb(减去一点开销)。int[]的最大大小为2^31项或约8gb,等等。看到gcAllowVeryLargObjects。

相关内容

  • 没有找到相关文章

最新更新