Retrieving Dictionary Value Best Practices

前端 未结 3 860
遥遥无期
遥遥无期 2020-12-24 04:22

I just recently noticed Dictionary.TryGetValue(TKey key, out TValue value) and was curious as to which is the better approach to retrieving a value from the Dic

3条回答
  •  长情又很酷
    2020-12-24 04:59

    TryGetValue is slightly faster, because FindEntry will only be called once.

    How much faster? It depends on the dataset at hand. When you call the Contains method, Dictionary does an internal search to find its index. If it returns true, you need another index search to get the actual value. When you use TryGetValue, it searches only once for the index and if found, it assigns the value to your variable.

    FYI: It's not actually catching an error.

    It's calling:

    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;
    }
    

    ContainsKey is this:

    public bool ContainsKey(TKey key)
    {
        return (this.FindEntry(key) >= 0);
    }
    

提交回复
热议问题