Dictionary [Résolu]

Signaler
Messages postés
60
Date d'inscription
dimanche 10 novembre 2002
Statut
Membre
Dernière intervention
30 juin 2011
-
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
-
Bonjour tous le monde.

Voila, j'ai un dictionary de type <string,string>.

Je dois le parcourir mais pas par la fonction "Foreach". Car une erreur de type "la collection a été modifiée........"
Au moment de mon parcour, cela, n'est pas important et, n'a pas d'incidences sur la suite.

Comment parcourir et récupérer la "Key" et la "Value" d'une autre façon?

Par exemple:

For (int i=0;i<dictionary.count;i++)
{

}
Je parcours ok mais comment récupérer les valeures?

Merci


Nicolas

3 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
Bonjour,

Ce type de code peut être utilisé, mais il vaudrait tout de même mieux voir si il n'y a pas plutôt moyen de rester sur l'énumération en modifiant le contenu du Dictionary après le parcours :

String[] keys = dictionary.Keys.ToArray();

// Si la méthode d'extension ToArray<TSource>() n'est pas disponible : 
//Dictionary<String, String>.KeyCollection keysCol = dictionary.Keys;
//String[] keys = new String[keysCol.Count];
//keysCol.CopyTo(keys, 0);

for (Int32 i = 0; i < keys.Length; i++)
{
String key = keys[i];
String value = dictionary[key];

// ...
}



/*
coq
CoqBlog
*/
Messages postés
60
Date d'inscription
dimanche 10 novembre 2002
Statut
Membre
Dernière intervention
30 juin 2011

C'est exactement cela que je cherchais.

Merci

Nicolas
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
28
Bonsoir

Cette méthode permet de travailler sur un tableau de clef correspondant à une image du Dictionnary à un moment donné.
Mais si tu as une exception indiquant que le Dictionary a été modifié, il y a de forte chance que cette modification pose des problèmes même avec cette méthode.

Il faut absolument que tu empêche toutes modifications du Dictionary pendant le traitement ou que tu fasses une copie complète du Dictionary (clefs et valeurs)

Bob.

C# is amazing, enjoy it!