В некотором устаревшем коде я вижу следующий метод расширения, чтобы облегчить добавление нового элемента ключа или обновление значения, если ключ уже существует.
Метод-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;
}
Теперь, мой вопрос: может ли быть какая-то проблема, если я заменил Method-1 на Method-2? Будет ли он нарушаться любым возможным сценарием?
Кроме того, я думаю, что это была разница между HashTable и Dictionary. HashTable позволяет обновлять элемент или добавлять новый элемент с помощью индексатора, пока словарь не работает! Разница устранена в версиях С# > 3.0?
Цель этого метода - не слишком исключение для исключения, если пользователь снова отправляет одно и то же значение ключа, метод должен просто обновить запись новым значением и создать новую запись, если была отправлена новая пара ключей-значений к методу.