4

オブジェクト初期化子を使用して、次のことを 1 行で行うことは可能ですか (たとえば、bool 配列を初期化し、すべての要素を true に設定します)。

int weeks = 5;
bool[] weekSelected = new bool[weeks];
for (int i = 0; i < weeks; i++)
{
    weekSelected[i] = true;
}

私はそれをうまく機能させることができません。


編集: .NET 2.0 で VS2008 を使用していることに言及する必要がありました (そのため、Enumerable は機能しません)。

4

3 に答える 3

9

bool[] weekSelected = Enumerable.Range(0, 5).Select(i => true).ToArray();

編集:列挙可能を使用できない場合は、BitArrayを使用できる場合があります:

BitArray bits = new BitArray(count, true);

必要に応じて配列にコピーします。

bool[] array = new bool[count];
bits.CopyTo(array, 0);
于 2010-02-26T22:44:43.420 に答える
3

.NET 2.0 を使用している場合は、ループを使用するのが正しい方法です。私はそれを変更しません。


元の答え。

型宣言が間違っています。これを試して:

bool[] weekSelected = new bool[] { true, true, true, true, true };

繰り返しを避けるために、これを行うこともできます。

bool[] weekSelected = Enumerable.Repeat(true, 5).ToArray();

これはループほど効率的ではないことに注意してください。ただし、たとえば 100 個の値があり、パフォーマンスが重要でない場合は、ループよりも簡潔で、{ true, true, true, ... }.

于 2010-02-26T22:44:30.347 に答える
2

これはあなたが探しているものでなければなりません:

bool[] weekSelected = Enumerable.Repeat<bool>(true, weeks).ToArray();
于 2010-02-26T22:46:13.190 に答える