Dans certains codes hérités, j'ai vu la méthode d'extension suivante pour faciliter l'ajout d'un nouvel élément de valeur-clé ou la mise à jour de la valeur, si la clé existe déjà.
Méthode 1 (code hérité).
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
if (map.ContainsKey(key))
{
map[key] = value;
}
else
{
map.Add(key, value);
}
}
Cependant, j'ai vérifié que cela map[key]=value
fait exactement le même travail. Autrement dit, cette méthode pourrait être remplacée par la méthode-2 ci-dessous.
Méthode-2.
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
Maintenant, ma question est .. Pourrait-il y avoir un problème si je remplace la méthode-1 par la méthode-2? Va-t-il se casser dans un scénario possible?
De plus, je pense que c'était la différence entre HashTable et Dictionary. HashTable permet de mettre à jour un élément, ou d'ajouter un nouvel élément en utilisant l'indexeur alors que Dictionary ne le fait pas !! Cette différence a-t-elle été éliminée dans les versions C #> 3.0?
L'objectif de cette méthode n'est pas de lever trop d'exception si l'utilisateur envoie à nouveau la même valeur-clé, la méthode doit simplement mettre à jour l'entrée avec la nouvelle valeur, et faire une nouvelle entrée si une nouvelle paire clé-valeur a été envoyée à la méthode .
la source