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?

有帮助吗?

解决方案

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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top