Je connais déjà l'exemple de boucle ci-dessous
bool[] switches = new bool[20];
for (int i = 0; i < switches.Length; i++) { switches[i] = false; }
Mais existe-t-il un moyen plus efficace de définir l'ensemble du tableau sur false?
Pour m'expliquer un peu, je ne suis pas, comme l'exemple ci-dessus, définissant un nouveau tableau booléen sur false car il serait déjà faux de toute façon. Dans mon cas, je lis une grande partie d'une mémoire de processus qui pourrait se déclencher environ 18724 fois au maximum lors de la recherche de modèles. Lorsqu'il détermine que les octets actuels ne contiennent pas le modèle, il définit l'ensemble du tableau bool sur false avec quelques autres choses, puis lit le bloc de mémoire suivant et redémarre la boucle.
Bien que ce soit plus par curiosité que j'ai posé cette question car l'ensemble du processus prend encore moins d'une seconde.
Encore une fois, ma question est, existe-t-il une meilleure façon de définir l'ensemble du tableau bool sur false?
default(bool)
est false
, créez simplement le tableau et chaque élément sera false
.
bool[] switches = new bool[20];
Tu peux essayer Array.Clear
comme alternative:
Array.Clear(switches, 0, switches.Length);
Vous ne savez pas quelles seront les performances relatives, mais vous ne devriez certainement pas vous attendre à des miracles.
Si vous pouvez réinitialiser le tableau, alors la réponse de Fabian Bigler est la bonne voie à suivre.
Si, toutefois, vous souhaitez le réinitialiser dans true
, utilisez alors Enumerable.Repeat
:
switches = Enumerable.Repeat(true, 20).ToArray();
Existe-t-il un meilleur moyen de définir l'ensemble du tableau bool sur false?
Non, il n'y en a pas.
Vous pouvez comparer, si l'attribution d'un nouveau tableau est plus rapide, mais j'en doute. Bien sûr, cela se ferait comme l'a souligné Adam Houldsworth.
switches = new bool[20];
Je crois que le la valeur par défaut d'un booléen est faux . Cependant, en tant que contrôle de santé mentale, il est logique de le parcourir. AFAIK, c'est le moyen le plus rapide
Voir: Comment remplir/instancier un tableau C # avec une seule valeur?
switches.Clear();
fera le travail. Les tableaux en .NET ont une taille fixe, c'est pourquoi Clear()
ne supprimera aucun élément, il mettra tous les éléments à des valeurs par défaut à la place (pour bool
c'est false
)