Я добавляю элементы в StringDictionary, и возможно, что появится дубликат ключа. Это, конечно же, вызовет исключение.
Если вероятность дублирования очень низкая (т.е. это редко произойдет), мне лучше использовать блок Try Catch и оставить его необработанным, или я должен всегда делать проверку .ContainsKey перед добавлением каждой записи?
Я предполагаю, что если вероятность дублирования ключей была высока, то разрешить исключения было бы плохим решением, поскольку они дороги.
Мысли?
Edit
Я использовал рефлектор в общем словаре и нашел следующее для 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, поскольку коллекция будет маленькой, а код более читабельным.