Допустим, у меня есть следующий метод:
internal MyClass GetValue(long key)
{
if (_myDictionary.ContainsKey(key))
return _myDictionary[key];
return null; // Not found
}
IDictionary<long,MyClass> _myDictionary=...
Но в приведенном выше коде есть два поиска в словаре:
- Проверка на наличие ключа
- Фактическое извлечение значения
Существует ли более оптимальный способ сформулировать такую функцию, чтобы выполнялся только один поиск, но случай «не найден» по-прежнемуобрабатывается с помощью нулевого возврата (т. е. не с помощью не найденного исключения)?
Например, было бы неплохо, если бы поиск ключа возвратил какой-то итератор, который можно использовать для получения значения, или недействительный итератор, если значение не было найдено, как это делается в C ++.Возможно C # имеет лучший способ сделать это, учитывая его языковые особенности.