In alcuni codici legacy ho visto il seguente metodo di estensione per facilitare l'aggiunta di un nuovo elemento valore-chiave o l'aggiornamento del valore, se la chiave esiste già.
Metodo-1 (codice legacy).
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);
}
}
Tuttavia, ho verificato che map[key]=value
fa esattamente lo stesso lavoro. Cioè, questo metodo potrebbe essere sostituito con il Metodo 2 di seguito.
Metodo-2.
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
Ora, la mia domanda è ... Potrebbe esserci qualche problema se sostituisco Method-1 con Method-2? Si romperà in ogni possibile scenario?
Inoltre, penso che questa sia stata la differenza tra HashTable e Dictionary. HashTable consente di aggiornare un elemento o aggiungere un nuovo elemento utilizzando l'indicizzatore mentre Dizionario no !! Questa differenza è stata eliminata nelle versioni C #> 3.0?
L'obiettivo di questo metodo non è un'eccezione se l'utente invia nuovamente lo stesso valore-chiave, il metodo dovrebbe semplicemente aggiornare la voce con il nuovo valore e creare una nuova voce se al metodo è stata inviata una nuova coppia chiave-valore .