c#-4.0 - 为什么 System.Buffer.BlockCopy 采用 int 而不是 long ?

标签 c#-4.0 stream

System.Buffer.BlockCopy 采用 int 参数而不是 long 作为副本的偏移量/长度是否有原因?流通常使用 long,为什么 BlockCopy 没有也需要 long 的重载?

最佳答案

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

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

关于c#-4.0 - 为什么 System.Buffer.BlockCopy 采用 int 而不是 long ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487546/

相关文章:

c# - 使用 SequenceEqual 然后返回哪些元素不匹配

c++ - (从 istream 中提取并插入到 ostream 中)操作 : is >><T> os;

scala - 如何使用 FS2 在 Scala 中实现递归斐波那契数列?

c# - 获取客户端-服务器聊天以流式传输 C# 中的在线用户列表

asp.net - 如何用英语和阿拉伯语做 ASP.net 网站

asp.net-mvc-3 - MVC3 Razor - 绑定(bind)到 View 模型的 TextBoxFor() 值在从 Post 返回后未正确更新

c# - LINQ join 和 orderby 问题

c# - 在 LINQ 结果上将 IEnumerable<T> 转换为 List<T>,性能损失巨大

javascript - 在 Sails.js 中将数据从文件传输到渲染页面

java - 如何使用 RxJava2 将多个单词组合成一个句子?