I've been using TryGetValue to add/replace data in my dictionaries. Just to make the distinction between adding new vs. replacing old, I use both [] and .Add(). This leads to code like this, if I am not actually doing anything with the retrieved value:
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);
}
}
If I am not actually doing anything with the retrieved value, is there a reason why I shouldn't replace the above code with this?:
public void Update(Foo foo)
{
dictionary[foo] = bar;
}
Thank you in advance.
You should use the simpler code.
It will be faster in all cases. (one hash lookup vs. two)
More importantly, it's simpler.