Q:

Вернуть значение из метода, если не выполняются условия C#

Как правильно поступить в ситуации, в методе находится ряд условий, если они удовлетворяются, то возвращается значение из словаря. Как поступить, если ни одно из условий не проходит условие? 
Класс - модель данных:
public class SecondModel
{
    public Dictionary<int, double> FirstDepartment { get; set; }
    public Dictionary<int, double> SecondDepartment { get; set; }
    public Dictionary<int, double> ThirdtDepartment { get; set; }
}

Провайдер
public class SecondManager
{
    private SecondModel _model;

    public enum Department
    {
        First,
        Second,
        Third
    };

    /// <summary>
    /// Конструктор по умолчанию
    /// </summary>
    public SecondManager()
    {

        _model = new SecondModel()
        {
            FirstDepartment = new Dictionary<int, double>(),
            SecondDepartment = new Dictionary<int, double>(),
            ThirdtDepartment = new Dictionary<int, double>()
        };

        _model.FirstDepartment.Add(1, 30.2);
        _model.FirstDepartment.Add(2, 25.8);
        _model.SecondDepartment.Add(3, 45.67);
        _model.SecondDepartment.Add(4, 54.46);
    }

    double GetValuesByKey(Department department, int key)
    {
        if (department == Department.First && _model.FirstDepartment.ContainsKey(key))
            return _model.FirstDepartment[key];

        if (department == Department.Second && _model.SecondDepartment.ContainsKey(key))
            return _model.FirstDepartment[key];

        if (department == Department.Third && _model.ThirdtDepartment.ContainsKey(key))
            return _model.ThirdtDepartment[key];

        // Еcли ключа или направления не существует
        return ???;
    }

}

Может вернуть infinity?

A:

Не люблю я нагороженные if-ы в подобных методах, я бы такой код написал и задокументировал т.к. поведение метода не совсем очевидно
/// <summary>
/// Возвращает значение по данному ключу в направлении если существует, в противном случае - возвращает null
/// </summary>
/// <param name="department">Направление</param>
/// <param name="key">Ключ</param>
/// <returns>Значение по данному ключу в направлении</returns>
double? GetValueByKey(Department department, int key)
{
    switch (department)
    {
        case Department.First when _model.FirstDepartment.ContainsKey(key):
            return _model.FirstDepartment[key];
        case Department.Second when _model.SecondDepartment.ContainsKey(key):
            return _model.SecondDepartment[key];
        case Department.Third when _model.ThirdtDepartment.ContainsKey(key):
            return _model.ThirdtDepartment[key];
        default:
            return null;
    }
}

