NameValueCollection vs Dictionary [dupliquer]
possible Duplicate:
IDictionary or NameValueCollection
est-ce une raison pour utiliser le dictionnaire au lieu de NameValueCollection?
(in C# / .NET Framework)
Option 1, en utilisant NameValueCollection:
//enter values:
NameValueCollection nvc = new NameValueCollection()
{
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"}
};
// retrieve values:
foreach(string key in nvc.AllKeys)
{
string value = nvc[key];
// do something
}
Option 2, en utilisant Dictionnaire ...
//enter values:
Dictionary<string, string> dict = new Dictionary<string, string>()
{
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"}
};
// retrieve values:
foreach (KeyValuePair<string, string> kvp in dict)
{
string key = kvp.Key;
string val = kvp.Value;
// do something
}
Pour ces cas d'utilisation, est-il un avantage à utiliser un contre l'autre? Toute différence dans les performances, l'utilisation de la mémoire, l'ordre de tri, etc.?
3 réponses
ils ne sont pas sémantiquement identiques. Le NameValueCollection
peut avoir des clés dupliquées tandis que le Dictionary
ne peut pas.
personnellement, si vous n'avez pas de double des clés, alors je m'en tiendrais au Dictionary
. Il est plus moderne, utilise IEnumerable<>
qui le rend facile à se mêler avec Linq
requêtes. Vous pouvez même créer un Dictionary
en utilisant la méthode Linq
ToDictionary()
.
NameValueCollection est une chaîne de caractère tapé alors que le Dictionnaire exploite génériques pour permettre le type de la variance. Voir avantages des génériques .
Dictionnaire sera beaucoup plus rapide. NameValueCollection permet de dupliquer les clés. Ce qui pourrait être mauvais dans certaines situations, ou souhaité dans d'autres. Le dictionnaire n'autorise pas les clés en double.
de: http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
Le Dictionnaire<(De <(TKey, TValue>)>) classe générique fournit une cartographie de l' un jeu de clés à un ensemble de valeurs. Chacun plus de la le dictionnaire se compose de une valeur et sa clé. Récupérer une valeur en utilisant sa clé est très rapide, proche de O(1), parce que le Dictionnaire<(De <(TKey, TValue>)>) classe est implémentée comme une table de hachage.