Использование нулевого оператора слияния со сравнением
Учитывая метод:
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, если аргумент равен нулю.