我想知道在C#中是否有任何结构可以包含超过Int.MaxValue限制的2,147,483,647个项目,如果有非常大的信息集。这是否必须使用多级数组?或者你可以创建一个最大长度为Long.MaxValue的数组吗?如果是这样,怎么样?
答案 0 :(得分:6)
已完成,示例BigArray<T>
实施is here。
答案 1 :(得分:3)
你的要求是什么?很难相信具有比这更多元素的数组将成为任何现实世界问题的正确解决方案,无论它是否合法。你可能在想这里的数据库,无论是持久的还是内存的。这是组织非常大的数据集的标准方法。
答案 2 :(得分:3)
对于任何单个对象,CLR当前都有2GB的限制 - 因此您必须使用多个数组构建它,即使元素类型为byte
也是如此。这应该是可行的。大多数正常的集合接口都会失败,因为它们使用int
作为索引,计数等。
我相信 CLR本身并不局限于一个可以防止这种情况的整体进程限制 - 尽管你几乎肯定希望在64位CLR和操作系统上运行,当然
答案 3 :(得分:2)
如果索引器是long
(int64)而不是int32
,则只能使用基于索引的结构。
即使List
无效,因为索引器是int32
。
答案 4 :(得分:1)
很少有计算机有足够的内存来保存内存中的这种结构。
答案 5 :(得分:-2)
ArrayList可以包含多个Int.MaxValue。