开发者

Is it possible to use Object Initializers on a bool?

Is it possible to do the following (e.g. initialize bool array and set all elements to true) in one line using object initializers?

int weeks = 5;
bool[] weekSelected = new bool[weeks];
for (int i = 0; i < weeks; i++)
{
    weekSelected[i] = true;
}

I can't quite get it to work.


Edit: I should have mentioned tha开发者_如何学Ct I am using VS2008 with .NET 2.0 (so Enumerable won't work).


bool[] weekSelected = Enumerable.Range(0, 5).Select(i => true).ToArray();

EDIT: If you can't use enumerable, you might be able to use a BitArray:

BitArray bits = new BitArray(count, true);

and then copy to an array as needed:

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


If you're using .NET 2.0, using a loop is the right way to do it. I wouldn't change it.


Original answer.

Your type declaration is wrong. Try this:

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

You can also do this to avoid repeating yourself:

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

Note that this is not as efficient as a loop, but if you have say 100 values and performance is not critical, it's more concise than the loop and less typing than { true, true, true, ... }.


This should be what you are looking for:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜