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