En algún código heredado, he visto el siguiente método de extensión para facilitar la adición de un nuevo elemento clave-valor o actualizar el valor, si la clave ya existe.Método para agregar nuevo o actualizar elemento existente en el diccionario
Método-1 (código heredado).
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);
}
}
sin embargo, he comprobado que map[key]=value
hace exactamente el mismo trabajo. Es decir, este método podría reemplazarse con el Método-2 a continuación.
Método-2.
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
Ahora, mi pregunta es ... ¿Podría haber algún problema si reemplazo el Método-1 por el Método-2? ¿Se romperá en cualquier escenario posible?
Además, creo que esta solía ser la diferencia entre HashTable y Dictionary. HashTable permite actualizar un elemento o agregar un nuevo elemento mediante el uso de un indexador, mientras que el diccionario no lo hace. ¿Se ha eliminado esta diferencia en las versiones C#> 3.0?
El objetivo de este método no es arrojar una excepción si el usuario envía la misma clave-valor nuevamente, el método solo debe actualizar la entrada con el nuevo valor y hacer una nueva entrada si se ha creado un nuevo par clave-valor enviar al método.