我喜欢用[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](根据您的需要)
使用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它的作用.因此,首先避免连续数字的数组可能比考虑如何创建它更好.
为什么要在函数已经存在的情况下创建它。
对于此特定示例,请使用
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)