У деякому застарілому коді я бачу наступний метод розширення для полегшення додавання нового елемента ключа-значення або оновлення значення, якщо ключ вже існує.
Метод-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?
Завдання цього методу не є надто викинутим винятком, якщо користувач знову надсилає той самий ключ-значення, метод повинен просто оновити запис новим значенням і зробити новий запис, якщо нова пара-ключ-значення було надіслано методу .