一尘不染

阵列可以容纳的最大大小是多少?

c#

在C#2008中,数组可以容纳的最大大小是多少?


阅读 342

收藏
2020-05-19

共1个答案

一尘不染

System.Int32.MaxValue

假设您的意思是System.Array,即。任何通常定义的数组(int[],等)。这是数组可以容纳的最大值数。每个值的大小仅受可容纳它们的内存或虚拟内存的数量限制。

强制执行此限制是因为System.Array使用Int32as作为索引器,因此只能使用有效的an值Int32。最重要的是,只能使用正值(即>= 0)。这意味着数组大小的绝对最大上限是的值的绝对最大上限Int32,可用Int32.MaxValue等于2 ^ 31或大约20亿。

完全不同的是,如果您担心这一点,很可能您正在使用 大量 数据,无论是正确还是不正确。在这种情况下,我会考虑使用a
List<T>而不是数组,以便您仅使用所需的内存。实际上,我建议您List<T>始终使用一种或另一种通用集合类型。这意味着只会分配您实际使用的内存,但是您可以像使用普通数组那样使用它。

note的另一个集合是Dictionary<int, T>您也可以像普通数组一样使用,但是只会稀疏地填充。例如,在下面的代码中,将仅创建一个元素,而不是数组将创建的1000个元素:

Dictionary<int, string> foo = new Dictionary<int, string>();
foo[1000] = "Hello world!";
Console.WriteLine(foo[1000]);

使用Dictionary还可以控制索引器的类型,并允许使用负值。对于绝对最大的稀疏数组,可以使用Dictionary<ulong, T>,它将提供比您可能想到的更多的潜在元素。

2020-05-19