创建c#int [],其值为0,1,2,3 ... length

Eri*_*Yin 33 c# arrays

我喜欢用[0,1,2 .... X] 创建一个int[]长度X和值的值

例如

public int[] CreateAA(int X){}

int[] AA = CreateAA(9) => [0,1,2,3,4,5,6,7,8,9]

有什么简单的方法吗?或者必须循环和初始值

V4V*_*tta 68

您可以利用IEnumerable的功能.

int[] arr = Enumerable.Range(0, X+1).ToArray();
Run Code Online (Sandbox Code Playgroud)

这将为您创建一个IEnumerable列表,.ToArray()并将满足您的int数组需求.

因此,对于X = 9,在您的情况下,它将生成数组[0,1,2,3,4,5,6,7,8,9](根据您的需要)


Mar*_*age 7

使用Enumerable.Range(0, 10).ToArray()非常简洁但是如果要创建一个非常大的数组,ToArray扩展方法必须将数字收集到一个缓冲区中,该缓冲区必须多次重新分配.在每次重新分配时,缓冲区的内容将复制到新的较大缓冲区..NET使用一种策略,其中每次重新分配时缓冲区的大小加倍(并且初始缓冲区有四个项).

因此,如果要避免多次重新分配缓冲区,则需要提前创建数组:

int[] aa = new int[10];
for (var i = 0; i < aa.Length; i += 1)
  aa[i] = i;
Run Code Online (Sandbox Code Playgroud)

这是初始化阵列的最有效方法.

但是,如果您需要连续数100,000,000个连续数字的数组,那么您应该查看一个设计,您不必将所有数字保留在数组中以避免内存要求的影响.IEnumerable<int>对于此目的非常有用,因为您不必分配整个序列,但可以在迭代时生成它,这正是Enumerable.Range它的作用.因此,首先避免连续数字的数组可能比考虑如何创建它更好.


Nik*_*wal 5

为什么要在函数已经存在的情况下创建它。

对于此特定示例,请使用

int[] AA = Enumerable.Range(0, 10).ToArray();
Run Code Online (Sandbox Code Playgroud)

哪里0 is the starting value和10 (X + 1) is the length of array

所以一个通用的适用于所有人

int[] AA = Enumerable.Range(0, X + 1).ToArray();
Run Code Online (Sandbox Code Playgroud)