.net: Добавление словарного элемента - проверить, существует ли он или разрешить исключение?
добавление элементов в StringDictionary и его 'Возможно, появится дубликат ключа. Это, конечно, будет исключением.
Если вероятность дубликатов очень мала (то есть это случается редко), лучше ли мне использовать блок Try Catch и оставить его необработанным, или я всегда должен делать проверку .ContainsKey перед добавлением каждой записи? I '
Я предполагаю, что если бы вероятность дублирования ключей была высокой, то разрешение исключений было бы плохим решением, поскольку они дорогостоящие.
Мысли?
редактировать
Я использовал рефлектор в общем словаре и нашел следующее для ContainsKey и TryGetValue, так как оба были упомянуты ниже.
public bool TryGetValue(TKey key, out TValue value)
{
int index = this.FindEntry(key);
if (index >= 0)
{
value = this.entries[index].value;
return true;
}
value = default(TValue);
return false;
}
А также
public bool ContainsKey(TKey key)
{
return (this.FindEntry(key) >= 0);
}
Я что-то упустил или TryGetValue выполняет больше работы, чем ContainsKey?
Я ценю ответы, и для моей текущей цели яЯ собираюсь выполнить вызов ContainsKey, поскольку коллекция будет небольшой, а код более читабельным.