c# - Impostazione dell'intero bool




arrays boolean (4)

default(bool) è false , basta creare l'array e ogni elemento sarà false .

bool[] switches = new bool[20];

Questa domanda ha già una risposta qui:

Sono già a conoscenza dell'esempio di loop qui sotto

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

Ma esiste un modo più efficiente per impostare l'intero array su falso?

Per spiegarmi un po ', non sono, come nell'esempio precedente, l'impostazione di un nuovo array bool su falso, poiché sarebbe già falso. Nel mio caso sto leggendo una gran parte di una memoria di processo che potrebbe sparare circa 18724 volte al massimo mentre cerca i pattern. Quando determina che i byte correnti non contengono il pattern, imposta l'intero array bool su false insieme ad alcune altre cose, quindi legge il successivo blocco di memoria e riavvia il ciclo.

Anche se è più per curiosità che ho fatto questa domanda perché l'intero processo richiede ancora meno di un secondo.

Quindi, di nuovo, la mia domanda è, c'è un modo migliore per impostare l'intero array bool su falso?


C'è un modo migliore per impostare l'intero array bool su falso?

No non c'è.

Potresti fare un benchmark, se assegnare un nuovo array è più veloce, ma ne dubito. Naturalmente, questo sarebbe stato fatto come indicato da Adam Houldsworth.

switches = new bool[20];

Se riesci a reinserire l'array, allora la risposta di Fabian Bigler è la strada giusta da percorrere.

Se, tuttavia, si desidera re-inizializzarlo su true , utilizzare Enumerable.Repeat :

switches = Enumerable.Repeat(true, 20).ToArray();

switches.Clear(); farà il lavoro. Le matrici in .NET hanno dimensioni fisse, ecco perché Clear() non rimuoverà alcun elemento, ma imposterà tutti gli elementi su valori predefiniti (per bool questo è false )





set