В некотором устаревшем коде я видел следующий метод расширения для облегчения добавления нового элемента "ключ-значение" или обновления значения, если ключ уже существует.
Метод-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 позволяет обновлять элемент или добавлять новый элемент с помощью индексатора, а Dictionary - нет !! Устранена ли эта разница в версиях C #> 3.0?
Целью этого метода не является исключение исключения, если пользователь снова отправляет одно и то же значение ключа, метод должен просто обновить запись с новым значением и сделать новая запись, если методу была отправлена новая пара "ключ-значение".