Problème avec les clés de la HashTable

Signaler
Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
-
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
-
Bonjour,

Je suis en 1.1

J'ai déjà utiliser des colections basées sur DictionaryBase.
Mais là, je voulais créer vite fait une petite table pour stocker des données temporaires, j'ai donc pris une HashTable.

Ma clé est l'addresse MAC sous forme de byte[6].

J'ajoute une MAC et quand je fait maHashTable.Contains(maMACDejaDedans), ça me retourne false.
J'ai essayé maHashTable[maMACDejaDedans], même résultat.

J'ai pris le contrusteur par défaut.

Où est mon erreur ? Je ne peux pas utiliser un tableau d'octets come clé ?

Merci

1 réponse

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
Hello,

C'est tout à fait normal, si ton tableau n'est pas le même que celui qui a servit pour entrer la valeur, et par le même, j'entend la même variable, et pas le même contenu.

Voici un exemple simple :

byte[] b1 =
new
byte[] { 1, 2, 3, 4, 5, 6 };

byte[] b2 =
new
byte[] { 1, 2, 3, 4, 5, 6 };

Hashtable h =
new
Hashtable();
h.Add(b1, 1);

MessageBox.Show(h.Contains(b1).ToString());  //Affiche true

MessageBox.Show(h.Contains(b2).ToString());  //Affiche false
Par contre, si tu fait le même test avec des nombres ou des string, tu auras 2* true.

Tout dépend de la manière dont sont comparés deux objets du type donné.
Pour un nombre, ou un string, par exemple, la valeur de l'objet, son contenu si tu préfères est comparé, c'est pour ça que ça fonctionne.
Pour un objet quelconque ou un tableau, par contre, il vérifie si l'objet est le même, et pas si le contenu de l'objet est identique.

Amicalement, SharpMao