将整个bool []设置为false

JMC*_*C17 20 c# arrays boolean set

我已经知道下面的循环示例了

bool[] switches = new bool[20];
for (int i = 0; i < switches.Length; i++) { switches[i] = false; }
Run Code Online (Sandbox Code Playgroud)

但有没有更有效的方法将整个数组设置为false?

为了解释一下自己,我不像上面的例子那样将新的bool数组设置为false,因为它本来就是假的.在我的情况下,我正在阅读大部分进程内存,在搜索模式时最多可以触发18724次.当它确定当前字节不包含模式时,它将整个bool数组设置为false以及其他一些内容然后读取下一个内存块并重新启动循环.

虽然我更多地出于好奇而问我这个问题,因为整个过程仍然需要不到一秒钟.

再次,我的问题是,是否有更好的方法将整个bool数组设置为false?

Fel*_*ani 44

default(bool)是的false,只需创建数组,每个元素都是false.

bool[] switches = new bool[20];
Run Code Online (Sandbox Code Playgroud)

  • 如果您创建一个 Bool[] 并将它们全部设置为 True 会怎么样? (3认同)

Jon*_*Jon 9

您可以尝试Array.Clear替代方案:

Array.Clear(switches, 0, switches.Length);
Run Code Online (Sandbox Code Playgroud)

不确定相对表现会是什么,但你绝对不应该期待奇迹.


Sin*_*atr 7

如果你可以重新启动数组,那么回答Fabian Bigler是正确的方法.

但是,如果要重新启动它true,请使用Enumerable.Repeat:

switches = Enumerable.Repeat(true, 20).ToArray();
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,Enumerable.Repeat非常慢。 (2认同)