所以我正在处理一个问题,我正在处理大量数据,而且我遇到了一个我不完全理解的限制。我需要存储6个整数值的集合,并将每个值与索引相关联。我选择的方法是最初创建我自己的类型,然后创建一个List(类型)。那个'阵列维度超出支持范围'错误就失败了。很好,我认为这是由于我定义的类型和列表/集合存储数据的方式。我期望使用完整的整数。 MaxValue数组中索引的数量,如http://msdn.microsoft.com/en-us/library/wak0wfyt.aspx#BKMK_ArraySize中给出但似乎不适用(为什么?)。然后我继续重写函数,最后得到一个类型为Tuple的数组(int,int,但同样,我遇到了同样的情况。对于一个以数组作为变量的类型的数组也是如此。我尝试了几种方法来查看数组的最大大小是多少结果最大大小约为48E6指数。问题是我需要超过10倍才能存储我拥有的数据...... 我发现使这种(有点)工作的唯一方法是使用List(List(of Integer()))然后在每40M索引之后将一个新项添加到顶级列表。令人讨厌的解决方案并没有效率,但它表明它可以工作...... 背景:VS2010,.NET 4.0,Win7 x64,32GB Ram。
关于如何在集合或数组中最好地存储6个整数值的任何想法(我需要能够通过索引访问它们)超过大约5亿个组合(理想情况下高达2.1B组合)?< / p>
由于
答案 0 :(得分:0)
解决方案实际上非常简单(感谢咖啡)。阅读上面链接中的文档,这不应该是问题,但是...一旦类型不是一个整数,数组的最大大小就不再是Int.MaxValue(尽管看起来如此,但是没有文件表明这一点)。解决这个问题的方法就是这样:
Dim _Array(Array_Size) as Tuple(of Integer,Integer,Integer,Integer,Integer,Integer)
到
Dim _Array1(Array_Size) as Integer
Dim _Array2(Array_Size) as Integer
Dim _Array3(Array_Size) as Integer
Dim _Array4(Array_Size) as Integer
Dim _Array5(Array_Size) as Integer
这允许每个数组的最大大小(或至少我需要的大小足够接近最大大小)。唯一的问题是我需要相应地扩展其余的代码。 考虑到MSDN声明“数组的每个维度的长度限制为整数数据类型的最大值”,我对此感到有些惊讶。当它看起来应该实际读取时,总长度[...]被限制为最大值&#39;。这可以解释为我收到一个错误(原始陈述)的错误,其大小会占到额外的6个整数值加上一些用于记帐。