Reputation: 217
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?
Upvotes: 2
Views: 702
Reputation: 888047
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.
Upvotes: 9