容量超过Int.MaxValue的C#数组

Ric*_*III 11 c# arrays structure

我想知道在C#中是否有任何结构可以包含超过Int.MaxValue的限制2,147,483,647项,如果有非常大的信息集.这是否必须使用多级数组?或者你可以创建一个最大长度为Long.MaxValue的数组吗?如果是这样,怎么样?

Han*_*ant 9

它已经完成,这里有一个示例BigArray<T>实现.


Jon*_*eet 5

CLR当前对任何单个对象的限制为2GB-因此,即使对于元素类型为,您也必须从多个数组中构建它byte。不过那应该是可行的。大多数正常的收集接口会因为int用于索引,计数等而失败。

相信 CLR本身并不受限于可以防止这种情况的总体进程限制-尽管您当然可以肯定希望在64位CLR和OS上运行。

  • 这有点奇怪,因为 System.Array 上的 GetValue 过载,需要很长时间作为索引,这表明您可以拥有更大的数组(http://msdn.microsoft.com/en-us/library/2zexc3z9.aspx ) (2认同)