数组中的最大元素数与最大索引器值

时间:2014-01-28 14:48:57

标签: c# arrays .net-4.5 maxlength

今天我开始怀疑MSDN中的某些内容。 This article演示了如何增加.NET 4.5和x64下的数组可分配的内存。这是一个很好的功能,但微软提供的描述中有些东西会阻止我。

在“备注”一节中,他们说:

  

对于字节数组和单字节结构数组,任何单个维度的最大索引为2,147,483,591(0x7FFFFFC7),其他类型为2,146,435,071(0X7FEFFFFF)。

由于我主要拥有int[]double[],因此后一个数字与我的索引相关。我可以使用int[] TestArray = new int[2146435071]创建一个数组,这很好。但是,在同一部分,微软声明:

  

数组中的最大元素数是UInt32.MaxValue。

哪个(根据MSDN):

  

此常量的值为4,294,967,295;也就是十六进制0xFFFFFFFF。

现在。如果我做对了,我可以有一个最多包含4,294,967,295个元素的数组(例如ints),但是由于数组被int索引而不是uint我不是能够访问我的数据的“上半部分”吗?

这让我很困惑,很奇怪我似乎在这里缺少必要的东西。

我希望你能开导我

亲切的问候

编辑:

我知道我可以创建多维数组,但是长度为2e9且宽度为2的数组似乎有点愚蠢。不管多维数组是否映射到一维数组?

1 个答案:

答案 0 :(得分:4)

  

任何单一维度的最大指数 为2,147,483,591

请记住,数组可以有多个维度,因此可以拥有最多包含4,294,967,295个项目的二维数组,但每个维度的最大长度为2147483591。

所以你可以拥有2,147,483,591 X 2阵列,但不能拥有1,000,000 X 1,000,000阵列。

相关问题