Attribution d'une nouvelle valeur à Hashtable sans utiliser la méthode Add
Question
Pour ajouter une nouvelle valeur à un Hashtable dotnet J'ai toujours utilisé:
myHashtable.Add(myNewKey, myNewValue);
mais je viens tout juste à travers un code qui effectue les opérations suivantes au lieu:
myHashTable[myNewKey] = myNewValue;
Y at-il une différence entre les deux méthodes?
La solution
Pour corriger la réponse de Sergej un peu ...
-
Add
va en effet lancer une exception si la clé existe déjà. - Utilisation de l'indexeur comme un setter pas jeter une exception (sauf si vous spécifiez une clé null).
- Utilisation de l'indexeur comme getter lancera une exception si la clé n'existe pas et si vous utilisez un
IDictionary<TKey,TValue>
générique. Dans les implémentationsIDictionary
non génériques (par exempleHashtable
), vous obtenez une référence null. Vous ne pouvez pas utiliser une clé nulle pour l'un si -. Vous obtenez unArgumentNullException
Autres conseils
premier jetteront exception s'il y avait déjà un élément avec la clé donnée et le second lancera une exception s'il n'y avait aucun élément avec une telle clé
La différence est dans le traitement des valeurs en double.
myHashtable.Add () lancers francs ArgumentException si Hashtable contient déjà un élément avec votre clé. myHashTable [myNewKey] remplace l'ancienne valeur par une nouvelle.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow