Hastable et tableaux en paramètre [Résolu]

Signaler
Messages postés
14
Date d'inscription
samedi 1 mars 2003
Statut
Membre
Dernière intervention
8 novembre 2006
-
Messages postés
14
Date d'inscription
samedi 1 mars 2003
Statut
Membre
Dernière intervention
8 novembre 2006
-
Bonjour,

lorsque je passe un tableau en paramètre d'un hastable je n'arrive pas à en récupérer les données.
voici un moceau de code illustrant mes propos...

string[] donnees = new string[2];
donnees[0] = "Coefficient de soudure : ";
donnees[1] = "3,3";
Hashtable ht = new Hashtable();
ht.Add("z", donnees);
IEnumerator clef = ht.Keys.GetEnumerator();
clef.MoveNext();
MessageBox.Show("Clé : " + clef.Current + " valeur : " + ht[clef.Current][1]);

...et l'erreur obtenue
Impossible d'appliquer l'indexation à l'aide de [] à une expression de type 'object'   

s010179

3 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Salut,
Oui c'est normal, la hashtable retourne un object, tu ne peux donc pas l'indexer.
Il faut d'abord le caster en string[] :

MessageBox.Show(
"Clé : " + clef.Current +
" valeur : " + ((
string[])ht[clef.Current])[1]);

<hr size="2" />-Blog-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Si tu es en .NET2 tu peux éventuellement utiliser un Dictionary (Generics) :

Dictionary<
string,
string[]> dic =
new
Dictionary<
string,
string[]>();

string[] donnees =
new
string[2];
donnees[0] =
"Coefficient de soudure : ";
donnees[1] =
"3,3";
dic.Add(
"z", donnees);

MessageBox.Show(
"valeur : " + dic[
"z"][1]);

<hr size="2" />-Blog-
Messages postés
14
Date d'inscription
samedi 1 mars 2003
Statut
Membre
Dernière intervention
8 novembre 2006

Merci beaucoup pour cette réponse très précieuse.

s010179