В некотором устаревшем коде я видел следующий метод расширения, чтобы упростить добавление нового элемента значения ключа или обновление значения, если ключ уже существует.
Метод-1 (устаревший код).
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);
}
}
Хотя я проверил, что map[key]=value
делает точно такую же работу. То есть этот метод можно заменить на метод 2 ниже.
Метод-2.
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
Теперь мой вопрос ... Могут ли возникнуть какие-либо проблемы, если я заменю Метод-1 на Метод-2? Это сломается в любом возможном сценарии?
Кроме того, я думаю, что раньше это была разница между HashTable и Dictionary. HashTable позволяет обновлять элемент или добавлять новый элемент с помощью индексатора, а словарь - нет! Устранена ли эта разница в версиях C #> 3.0?
Цель этого метода - не создавать исключений, если пользователь снова отправляет то же значение ключа, метод должен просто обновить запись новым значением и создать новую запись, если была отправлена новая пара ключ-значение к методу.