.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, поскольку коллекция будет небольшой, а код более читабельным.

Ответы на вопрос(8)

Ваш ответ на вопрос