1

新しい配列を作成したい。まあ言ってみれば

int[] clickNum = new int[800];

次に、のようなことをしたいと思います。これにより、clickNum = 2から始まるすべての配列要素clickNum[0]clickNum[800]に設定され2ます。ループを使用してそれを行う方法があることを私は知っています。しかし、私が求めているのは、それを実行するための関数またはメソッドにすぎません。

4

4 に答える 4

7

Enumerable.Repeat配列を初期化するときに使用できると思います。

int[] clickNum = Enumerable.Repeat(2, 800).ToArray();

もちろん遅くなりますが、文字通り何百万もの要素を開始する予定がない限り、問題はありません

for私のマシンの簡単なベンチマークでは、ループを使用して1,000,000要素を初期化するには時間がかかりまし2msたが、を使用するとEnumerable.Repeatがかかり9msました。

このページは、最大20倍遅くなる可能性があることを示唆しています。

于 2012-05-26T23:16:54.387 に答える
5

既存の配列/リストを埋めるための組み込み関数はないと思います。複数の場所で操作が必要な場合は、そのための簡単なヘルパーメソッドを作成できます。

static void Fill<T>(IList<T> arrayOrList, T value)
{
    for (int i = arrayOrList.Count - 1; i >= 0; i--)
    {
        arrayOrList[i] = value;
    }
}
于 2012-05-26T23:24:09.173 に答える
1

作成した関数を探していると思いますが、入力する時間がありません。したがって、1行で表示したい場合は、次のことを試してください。

for(int i = 0; i < clickNum.Length; i++, clickNum[i] = 2);
于 2012-05-26T23:42:16.637 に答える
1

非常に大きな配列で作業していて、パフォーマンスが懸念される場合は、Array.ConvertAllを使用するとより効率的になります。

int[] clickNum = Array.ConvertAll(new int[800], x => x = 2);

また、パフォーマンスに問題がなければ、標準のLINQSelectを使用することもできます。

int[] clickNum = new int[800].Select(x => x = 2).ToArray();
于 2012-05-27T08:30:23.947 に答える