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?

Était-ce utile?

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émentations IDictionary non génériques (par exemple Hashtable), vous obtenez une référence null. Vous ne pouvez pas utiliser une clé nulle pour l'un si -. Vous obtenez un ArgumentNullException

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
scroll top