Let’s say I have a method as follows:
internal MyClass GetValue(long key)
{
if (_myDictionary.ContainsKey(key))
return _myDictionary[key];
return null; // Not found
}
IDictionary<long,MyClass> _myDictionary=...
But the above code has two lookups in the dictionary:
- The test for the existance of the key
- The actual retrieval of the value
Is there a more optimal way to phrase such a function, so that only one lookup is performed, but the case of “not found” is still handled via a null return (i.e., not via a not found exception)?
For example, it would have been nice if the lookup for the key returned some sort of iterator that could be used to retrieve the value or an invalid iterator if the value was not found as is done in C++. Perhaps C# has a better way of doing this given its language features.
The
TryGetValuemethod was designed for precisely this scenario – to avoid the two lookup operations.