36

I want to initialize an array of int and populate it with a range of numbers:

return new int[].Populate(30,50);

So then I would have an array with 30, 31, 32, 33... - 50

Sam
  • 15,336
  • 25
  • 85
  • 148

3 Answers3

85

You can use Enumerable.Range() to e.g. return an array of 21 integers starting at 30:

return Enumerable.Range(30, 21).ToArray();
BrokenGlass
  • 158,293
  • 28
  • 286
  • 335
26

Use Enumerable.Range

var array = Enumerable.Range(30, 21).ToArray();

This will result in a sequence of 21 values starting at 30. Simply put, you get your { 30 ... 50 } array.

Anthony Pegram
  • 123,721
  • 27
  • 225
  • 246
14

Using a for loop is actually faster than using Enumerable.Range().ToArray()

I measured it for creating an array of 1 000 000 elements.

int[] array = Enumerable.Range(0, 1000000).ToArray(); takes 9ms, while creating an array int[] array2 = new int[1000000]; and filling it in a for loop took only 3ms.

adam
  • 141
  • 1
  • 3
  • This seems not to be the case anymore. My measurement of Enumerable.Range().ToArray() of 100 000 000 elements took around 1170 ms, and filling the same amount of elements in `new int[]` in a loop took around 6900 ms. – Jogge Aug 16 '22 at 08:19