Я использовал TryGetValue для добавления/замены данных в моих словарях. Чтобы сделать различие между добавлением новых и заменой старых, я использую как [], так и .Add(). Это приводит к коду, как это, если я на самом деле не делать ничего с извлеченным значением:Должен ли я всегда использовать Dictionary.TryGetValue, даже если я все хочу сделать, это добавить/заменить значения?
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;
}
Благодарим вас заблаговременно.
_ «Есть ли причина, по которой я не должен заменять вышеуказанный код этим?» _ ** Нет ** (кроме того, что 'bar' не объявлен и не инициализирован) –
Просто не делайте этого обратное с ожиданием получения нулевого для отсутствующих ключей: 'var item = dictionary [foo]', поскольку это вызовет исключение, если ключ не существует (в отличие от «Hashtable»). –
Что такое 'bar' во втором методе' Update (Foo foo) '? –