C# 可以在bool上使用对象初始值设定项吗?

C# 可以在bool上使用对象初始值设定项吗?,c#,visual-studio-2008,.net-2.0,object-initializers,C#,Visual Studio 2008,.net 2.0,Object Initializers,是否可以使用对象初始值设定项在一行中执行以下操作(例如初始化布尔数组并将所有元素设置为true) int weeks = 5; bool[] weekSelected = new bool[weeks]; for (int i = 0; i < weeks; i++) { weekSelected[i] = true; } int周=5; bool[]周选择=新bool[周]; 对于(int i=0;itrue).ToArray()更少的键入 编辑:如果不能使用enumerabl

是否可以使用对象初始值设定项在一行中执行以下操作(例如初始化布尔数组并将所有元素设置为true)

int weeks = 5;
bool[] weekSelected = new bool[weeks];
for (int i = 0; i < weeks; i++)
{
    weekSelected[i] = true;
}
int周=5;
bool[]周选择=新bool[周];
对于(int i=0;i
我不能完全让它工作



编辑:我应该提到,我正在使用VS2008与.NET 2.0一起使用(因此Enumerable不起作用)。

如果您使用的是.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.Range(0,5).Select(i=>true).ToArray()更少的键入

编辑:如果不能使用enumerable,则可以使用:

然后根据需要复制到阵列:

bool[] array = new bool[count];
bits.CopyTo(array, 0);

这应该是您正在寻找的:

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

使用初始值设定方法时,这不允许传入数组的大小
weeks
实际上是一个变量。我事先不知道它的价值是多少。我应该说得更清楚。这是一个很好的答案,但我在VS2008中使用.NET2.0,所以那里不存在可枚举的。我更新了问题。除此之外,代码在当前形式下不起作用。您确实有输入错误,第二行应该是:bool[]weekSelected。。。
bool[] weekSelected = Enumerable.Repeat<bool>(true, weeks).ToArray();