Whenever you allocate a new array in C# with
new T[length]
the array entries are set to the default of T. That is null
for the case that T
is a reference type or the result of the default constructor of T
, if T
is a value type.
In my case i want to initialize an Int32
array with the value -1:
var myArray = new int[100];
for (int i=0; i<myArray.Length; i++) { myArray[i] = -1; }
So after the memory is reserved for the array, the CLR loops over the newly allocated memory and sets all entries to default(int) = 0. After that, my code sets all entries to -1.
That makes the initialization redundant. Does the JIT detect this and neglects the initialization to 0 and if not, is there a way to directly initialize a portion of memory with a custom value?
Referring to C# Array initialization - with non-default value , using Enumerable.Repeat(value, length).ToArray()
is no option, because Enumerable.ToArray
allocates a new array and copies the values to it afterwards.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…