4

是否可以使用对象初始化器在一行中执行以下操作(例如初始化 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 回答