Traitement sur un HashTable

Résolu
ahikaz Messages postés 71 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 7 décembre 2007 - 12 juil. 2007 à 17:22
ahikaz Messages postés 71 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 7 décembre 2007 - 13 juil. 2007 à 10:32
Salut,

Je suis entrain de manipuler un HashTable. Dans la boucle où je lis les données, je modifie à chaque fois la valeur de l'objet (donc pas de la clé). Mais lors de la deuxième itération, je peux plus lire depuis la HashTable et cela génère une erreur.

Donc, voici mon code :
foreach

(
string ieKey
in htParams.Keys){

PARAMETRE p1 = (
PARAMETRE)htParams[ieKey];p1.POSITION = cell[cell[p1.POSITION].Row + objDt2.Rows.Count - 1, cell[p1.POSITION].Column].Name;

htParams[ieKey] = p1;

}

Le message d'erreur est le suivant : La collection a été modifiée ; l'opération d'énumération peut ne pas s'exécuter.

Est-ce qu'on peut faire un traitement sur une valeur d'un hashtable lorsqu'on le parcourt ?
J'espère que vous pouvez m'aider et peut être aussi me proposer une solution.

Merci.

6 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
12 juil. 2007 à 17:31
Salut

Tu ne peux en effet pas modifier une collection dans une boucle foreach.
Cependant, cela reste possible avec une boucle for.

Mx
MVP C# 
3
ahikaz Messages postés 71 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 7 décembre 2007
13 juil. 2007 à 10:32
J'ai résolu le problème. En effet, j'ai fait un clone de ma Hashtable et j'ai modifié celle que je veux.

(pour la boucle je ne savais pas trop comment la paramétrer).
3
ahikaz Messages postés 71 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 7 décembre 2007
12 juil. 2007 à 17:54
Merci pour la réponse.

J'ai essayé avec une boucle while (avec IEnumerator et key.MoveNext) mais c'est la même chose.

Pour la boucle for, je ne vois pas trop comment je pourrai la représenter.
Est-ce que tu pourras m'écricre comment faire une boucle for pour un HashTable ?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
12 juil. 2007 à 18:11
Normal que ça fasse le même problème, étant donné que l'erreur vient justement de l'enumerator
(le foreach utilise un enumerator pour se déplacer dans la collection).

Il faut donc passer par une boucle for comme te l'a indiqué Mx.

<hr />
-Blog-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ahikaz Messages postés 71 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 7 décembre 2007
12 juil. 2007 à 18:15
Et comment utiliser la boucle for dans ce cas ? avec un itérateur ?
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
12 juil. 2007 à 21:01
Salut, utilises une SortedList ou une SortedList< TKey,TValue >.
0
Rejoignez-nous