문제

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