web-dev-qa-db-fra.com

Définition de bool entier [] sur false

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?

20
JMC17

default(bool) est false, créez simplement le tableau et chaque élément sera false.

bool[] switches = new bool[20];
44
Felipe Oriani

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.

9
Jon

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();
6
Sinatr

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];
2
Fabian Bigler

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?

2
Daniel Kotin

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)

1
nativehr