Should I always use Dictionary.TryGetValue even if I all want to do is add/replace values?

596 Views Asked by At

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.

2

There are 2 best solutions below

4
On BEST ANSWER

You should use the simpler code.
It will be faster in all cases. (one hash lookup vs. two)

More importantly, it's simpler.

7
On

No, there is no reason to not use the shorter code.
In fact, you really should use it, as it is much simpler and we all know:
Simpler code means less errors.