数组中元素的最大数量与最大索引器值
今天我开始想知道MSDN中的一些东西。 本文演示如何通过.NET 4.5和x64下的数组增加可分配的内存。 这是一个很好的功能,但是Microsoft提供的描述中的某些内容对我很有帮助。
他们说,在“备注”一节中说:
对于其他类型的字节数组和单字节结构数组,在任何单维中的最大索引为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的数组似乎有点愚蠢。 无论如何,多维数组是否映射到一维数组?
任何单一维度的最大指数是2,147,483,591
请记住,数组可以有多个维度,因此您可以有一个最多有4,294,967,295个项目的二维数组,但每个维度的最大长度可以是2,147,483,591。
所以你可以有2,147,483,591 X 2数组,但不是1,000,000 X 1,000,000数组。
链接地址: http://www.djcxy.com/p/77181.html上一篇: Maximum number of elements in an array vs. maximum indexer value