Using null coalescing operator with a comparison

662 views Asked by At

Given the method:

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

    return date.GetValueOrDefault() < MaxDate;
}

Is it possible to rewrite the if statement such that it uses the null-coalescing operator?

1

There are 1 answers

1
SLaks On BEST ANSWER

You can replace the whole function with

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

GetValueOrDefault() will reutnr an empty DateTime (which is DateTime.MinValue) if it's null, and that won't be > MaxDate.

You can write that explicitly too:

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

However, you don't even need that:

return Date > MinDate && date < MaxDate;

Nullable types have lifted comparison operators that return false if an argument is null.