使用null合并运算符进行比较

时间:2011-11-08 00:29:56

标签: c# null-coalescing-operator null-coalescing

鉴于方法:

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

    return date.GetValueOrDefault() < MaxDate;
}

是否可以重写if语句,使其使用null-coalescing运算符?

1 个答案:

答案 0 :(得分:7)

您可以用

替换整个功能
return date.GetValueOrDefault() < MaxDate && Date > MinDate;

GetValueOrDefault()会返回一个空的DateTimeDateTime.MinValue),如果它为空,那将不会是> MaxDate

你也可以明确地写出来:

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

但是,你甚至不需要:

return Date > MinDate && date < MaxDate;

Nullable类型提升了比较运算符,如果参数为null,则返回false。