Использование нулевого оператора слияния со сравнением

Учитывая метод:

public static bool IsDateValid(DateTime? date)
{
    if (date.HasValue ? date.GetValueOrDefault() < MinDate : false)
    {
        return false;
    }

    return date.GetValueOrDefault() < MaxDate;
}

Можно ли переписать оператор if таким образом, чтобы в нем использовался оператор объединения нулей?

1 ответ

Решение

Вы можете заменить всю функцию

return date.GetValueOrDefault() < MaxDate && Date > MinDate;

GetValueOrDefault() будет реутнр пустой DateTime (который DateTime.MinValue) если это ноль, и это не будет > MaxDate,

Вы также можете написать это явно:

return (date ?? DateTime.MinValue) < MaxDate && Date > MinDate;

Тем не менее, вам даже не нужно это:

return Date > MinDate && date < MaxDate;

Обнуляемые типы имеют отмененные операторы сравнения, которые возвращают false, если аргумент равен нулю.

Другие вопросы по тегам