.NET中的方法是从0到n获取int数组

aba*_*hev 5 .net c# arrays

我正在寻找用0到随机数字填充数组的方法.例如,从0到12或1999等.

当然,有一个for循环:

var arr = int[n];
for(int i = 0; i < n; i++)
{
  arr[i] = i;
}
Run Code Online (Sandbox Code Playgroud)

我可以使这种方法成为Array课堂的延伸.但是有更有趣的方法吗?

Chr*_*fer 30

这已经存在(返回IEnumerable,但如果需要,这很容易改变):

arr = Enumerable.Range(0, n);
Run Code Online (Sandbox Code Playgroud)

  • 你需要添加一个.ToArray() (2认同)

con*_*tor 6

在我看来,最有趣的方式不是产生一个数组,而是IEnumerable<int>枚举相同的数字 - 它具有O(1)设置时间的好处,因为它推迟了实际循环的执行:

public IEnumerable<int> GetNumbers(int max) {
    for (int i = 0; i < max; i++)
        yield return i;
}
Run Code Online (Sandbox Code Playgroud)

这个循环遍历所有号码从0max-1,返回他们一次一个-但它只能通过循环将当你真正需要它.

您也可以使用它GetNumbers(max).ToArray()来获得"正常"数组.