C#で新しい配列を割り当てるときはいつでも
new T[length]
配列エントリはデフォルトのTに設定されます。これは、が参照型null
である場合、またはが値型である場合はT
、のデフォルトコンストラクタの結果である場合です。T
T
私の場合Int32
、値-1で配列を初期化したいです。
var myArray = new int[100];
for (int i=0; i<myArray.Length; i++) { myArray[i] = -1; }
したがって、メモリが配列用に予約された後、CLRは新しく割り当てられたメモリをループし、すべてのエントリをdefault(int)= 0に設定します。その後、私のコードはすべてのエントリを-1に設定します。
これにより、初期化が冗長になります。JITはこれを検出し、0への初期化を無視しますか?そうでない場合、カスタム値でメモリの一部を直接初期化する方法はありますか?
C#配列の初期化を参照すると、デフォルト値以外の場合、新しい配列が割り当てられ、後で値がコピーされるため、usingEnumerable.Repeat(value, length).ToArray()
はオプションではありません。Enumerable.ToArray