Использование нулевого оператора слияния со сравнением - PullRequest
2 голосов
/ 08 ноября 2011

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

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

    return date.GetValueOrDefault() < MaxDate;
}

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

1 Ответ

7 голосов
/ 08 ноября 2011

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

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

GetValueOrDefault() будет повторно пусто DateTime (что равно DateTime.MinValue), если оно равно нулю, и это не будет > MaxDate.

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

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

Однако вам даже не нужно:

return Date > MinDate && date < MaxDate;

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

...