Метод добавления нового или обновления существующего элемента в Словаре

В некотором устаревшем коде я видел следующий метод расширения для облегчения добавления нового элемента "ключ-значение" или обновления значения, если ключ уже существует.

Метод-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?

Целью этого метода не является исключение исключения, если пользователь снова отправляет одно и то же значение ключа, метод должен просто обновить запись с новым значением и сделать новая запись, если методу была отправлена ​​новая пара "ключ-значение".

208
задан Uwe Keim 16 November 2013 в 04:24
поделиться