Должен ли я всегда использовать Dictionary.TryGetValue, даже если я все хочу сделать, это добавить / заменить значения?
Я использовал TryGetValue для добавления / замены данных в моих словарях. Просто чтобы провести различие между добавлением нового и заменой старого, я использую оба [] и.Add(). Это приводит к такому коду, если я на самом деле ничего не делаю с полученным значением:
private Dictionary<Foo, Bar> dictionary = new Dictionary<Foo, Bar>();
public void Update(Foo foo)
{
Bar bar;
if (dictionary.TryGetValue(foo, out bar)
{
dictionary [foo] = bar;
}
else
{
dictionary .Add(foo, bar);
}
}
Если я на самом деле ничего не делаю с полученным значением, есть ли причина, по которой я не должен заменять приведенный выше код этим?:
public void Update(Foo foo)
{
dictionary[foo] = bar;
}
Заранее спасибо.
2 ответа
Решение
Вы должны использовать более простой код.
Это будет быстрее во всех случаях. (один поиск по хешу против двух)
Что еще более важно, это проще.
Нет, нет причин не использовать более короткий код.
На самом деле, вы действительно должны использовать это, так как это намного проще, и мы все знаем:
Более простой код означает меньше ошибок.