是否可以在bool上使用Object Initializers?

时间:2010-02-26 22:42:19

标签: c# visual-studio-2008 .net-2.0 object-initializers

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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:3)

如果您使用的是.NET 2.0,那么使用循环是正确的方法。我不会改变它。


原始答案。

您的类型声明错误。试试这个:

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

你也可以这样做,以免重复自己:

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

请注意,这不如循环有效,但如果你说100个值并且性能不重要,那么它比循环更简洁,输入比{ true, true, true, ... }更少。

答案 2 :(得分:2)

这应该是你要找的东西:

bool[] weekSelected = Enumerable.Repeat<bool>(true, weeks).ToArray();