我喜欢创建一个int[]
长度X
并用 [0,1,2....X] 赋值
例如
public int[] CreateAA(int X){}
int[] AA = CreateAA(9) => [0,1,2,3,4,5,6,7,8,9]
有什么简单的方法吗?或者必须循环和初始化值
您可以利用 IEnumerable 的功能。
int[] arr = Enumerable.Range(0, X+1).ToArray();
这将为您创建一个 IEnumerable List 并.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;
这是初始化数组的最有效方式。
但是,如果您需要一个包含 100,000,000 个连续数字的数组,那么您应该考虑一种不必将所有数字都保存在数组中的设计,以避免内存需求的影响。IEnumerable<int>
为此目的非常有用,因为您不必分配整个序列,而是可以在迭代时生成它,而这正是Enumerable.Range
它所做的。因此,首先避免连续数字的数组可能比考虑如何创建它更好。
为什么要在已经存在的情况下创建一个功能。
对于此特定示例,请使用
int[] AA = Enumerable.Range(0, 10).ToArray();
在哪里0 is the starting value
和10 (X + 1) is the length of array
所以一个通用的适用于所有人
int[] AA = Enumerable.Range(0, X + 1).ToArray();
初始化试试这个
int x = 10;
Enumerable.Range(0, x)
.Select((v, i) => v + i).ToArray();
带函数和循环:
static int[] f(int X)
{
int[] a = new int[X+1];
for(int i = 0; i < a.Length; i++)
a[i] = i;
return a;
}
为了完整起见,这里有一个创建数组的函数。
CreateArray(0, 9)
我通过设置最小值和最大值的参数(即返回值)使其更加通用{0,1,2,3,4,5,6,7,8,9}
。
static int[] CreateArray(int min, int max) {
int[] a = new int[max - min + 1];
for (int i = 0; i < a.Length; i++) {
a[i] = min + i;
}
return a;
}