鉴于方法:
public static bool IsDateValid(DateTime? date)
{
if (date.HasValue ? date.GetValueOrDefault() < MinDate : false)
{
return false;
}
return date.GetValueOrDefault() < MaxDate;
}
是否可以重写if语句,使其使用null-coalescing运算符?
答案 0 :(得分:7)
您可以用
替换整个功能return date.GetValueOrDefault() < MaxDate && Date > MinDate;
GetValueOrDefault()
会返回一个空的DateTime
(DateTime.MinValue
),如果它为空,那将不会是> MaxDate
。
你也可以明确地写出来:
return (date ?? DateTime.MinValue) < MaxDate && Date > MinDate;
但是,你甚至不需要:
return Date > MinDate && date < MaxDate;
Nullable类型提升了比较运算符,如果参数为null,则返回false。