Problème avec les clés de la HashTable

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 2 nov. 2006 à 16:36
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 - 3 nov. 2006 à 13:25
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

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
3 nov. 2006 à 13:25
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
0
Rejoignez-nous