是否可以使用对象初始化器在一行中执行以下操作(例如初始化 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 不起作用)。
是否可以使用对象初始化器在一行中执行以下操作(例如初始化 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 不起作用)。
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);
如果您使用的是 .NET 2.0,则使用循环是正确的方法。我不会改变它。
原始答案。
你的类型声明是错误的。试试这个:
bool[] weekSelected = new bool[] { true, true, true, true, true };
您也可以这样做以避免重复自己:
bool[] weekSelected = Enumerable.Repeat(true, 5).ToArray();
请注意,这不如循环有效,但如果您说 100 个值并且性能并不重要,那么它比循环更简洁,并且比{ true, true, true, ... }
.
这应该是您正在寻找的:
bool[] weekSelected = Enumerable.Repeat<bool>(true, weeks).ToArray();