127 votes

KeyValuePair VS DictionaryEntry

Quelle est la différence entre KeyValuePair qui est la version générique et DictionaryEntry?

Pourquoi KeyValuePair est-il utilisé à la place de DictionaryEntry dans la classe Dictionary générique?

Merci d'avance,

Geai...

116voto

cdmckay Points 11234

KeyValuePair<TKey,TValue> est utilisé à la place de DictionaryEntry car il est généré. L’avantage d’utiliser KeyValuePair<TKey,TValue> est que nous pouvons donner au compilateur plus d’informations sur ce que contient notre dictionnaire. Pour développer l'exemple de Chris (dans lequel nous avons deux dictionnaires contenant des paires <string, int> ).

 Dictionary<string, int> dict = new Dictionary<string, int>();
foreach (KeyValuePair<string, int> item in dict) {
  int i = item.Value;
}

Hashtable hashtable = new Hashtable();
foreach (DictionaryEntry item in hashtable) {
  // Cast required because compiler doesn't know it's a <string, int> pair.
  int i = (int) item.Value;
}
 

53voto

Chris Points 13472

KeyValuePair <T, T> sert à effectuer une itération dans le dictionnaire <T, T>. C’est la façon de faire les choses .Net 2 (et suivantes).

DictionaryEntry est pour itérer à travers HashTables. C'est la façon de faire les choses .Net 1.

Voici un exemple:

 Dictionary<string, int> MyDictionary = new Dictionary<string, int>();
foreach (KeyValuePair<string, int> item in MyDictionary)
{
  // ...
}

Hashtable MyHashtable = new Hashtable();
foreach (DictionaryEntry item in MyHashtable)
{
  // ...
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X