lhi*_*onk 8 c# arrays maxlength .net-4.5
今天我开始怀疑MSDN中的某些东西. 本文演示了如何增加.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),但是由于数组被a索引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 数组。