新しい配列を作成したい。まあ言ってみれば
int[] clickNum = new int[800];
次に、のようなことをしたいと思います。これにより、clickNum = 2
から始まるすべての配列要素clickNum[0]
がclickNum[800]
に設定され2
ます。ループを使用してそれを行う方法があることを私は知っています。しかし、私が求めているのは、それを実行するための関数またはメソッドにすぎません。
Enumerable.Repeat
配列を初期化するときに使用できると思います。
int[] clickNum = Enumerable.Repeat(2, 800).ToArray();
もちろん遅くなりますが、文字通り何百万もの要素を開始する予定がない限り、問題はありません。
for
私のマシンの簡単なベンチマークでは、ループを使用して1,000,000要素を初期化するには時間がかかりまし2ms
たが、を使用するとEnumerable.Repeat
がかかり9ms
ました。
このページは、最大20倍遅くなる可能性があることを示唆しています。
既存の配列/リストを埋めるための組み込み関数はないと思います。複数の場所で操作が必要な場合は、そのための簡単なヘルパーメソッドを作成できます。
static void Fill<T>(IList<T> arrayOrList, T value)
{
for (int i = arrayOrList.Count - 1; i >= 0; i--)
{
arrayOrList[i] = value;
}
}
作成した関数を探していると思いますが、入力する時間がありません。したがって、1行で表示したい場合は、次のことを試してください。
for(int i = 0; i < clickNum.Length; i++, clickNum[i] = 2);
非常に大きな配列で作業していて、パフォーマンスが懸念される場合は、Array.ConvertAllを使用するとより効率的になります。
int[] clickNum = Array.ConvertAll(new int[800], x => x = 2);
また、パフォーマンスに問題がなければ、標準のLINQSelectを使用することもできます。
int[] clickNum = new int[800].Select(x => x = 2).ToArray();