W niektórych starszych kodach widzę następującą metodę rozszerzenia, aby ułatwić dodanie nowego elementu klucz-wartość lub aktualizację wartości, jeśli klucz już istnieje.
Metoda 1 (starszy kod).
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);
}
}
Chociaż sprawdziłem, czy map[key]=value
wykonuje dokładnie tę samą pracę. Oznacza to, że tę metodę można zastąpić Metodą 2 poniżej.
Metoda 2.
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
Moje pytanie brzmi: czy może być jakiś problem, jeśli zastąpię Metodę-1 Metodą-2? Czy dojdzie do awarii w jakimkolwiek możliwym scenariuszu?
Myślę też, że kiedyś była to różnica między HashTable a słownikiem. HashTable pozwala aktualizować element lub dodawać nowy element za pomocą indeksu, podczas gdy Dictionary nie !! Czy ta różnica została wyeliminowana w wersjach C #> 3.0?
Celem tej metody nie jest rzucenie wyjątku, jeśli użytkownik ponownie wyśle tę samą wartość klucza, metoda powinna po prostu zaktualizować wpis o nową wartość i dokonać nowego wpisu, jeśli nowa para klucz-wartość została wysłana do metody .