Initializing a C# array with multiple copies of the same element Initializing a C# array with multiple copies of the same element arrays arrays

Initializing a C# array with multiple copies of the same element


What about this?

double[] v = Enumerable.Repeat(x, n).ToArray();

EDIT: I just did a small benchmark; to create 1000 arrays of 100000 elements each, using a loop is about 3 times faster that Enumerable.Repeat.

Repeat 00:00:18.6875488 Loop 00:00:06.1628806 

So if performance is critical, you should prefer the loop.


var arr = Enumerable.Repeat(x, n).ToArray();

Personally, I'd just use a regular array loop, though:

var arr = new double[n];for(int i = 0 ; i < arr.Length ; i++) arr[i] = x;

More characters, but the array is demonstrably the right size from the outset - no iterative growth List<T>-style and final copy back. Also; simply more direct - and the JIT can do a lot to optimise the for(int i = 0 ; i < arr.Length ; i++) pattern (for arrays).


double[] theSameValues = Enumerable.Repeat(2.0, 10).ToArray();