2

给定方法:

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

    return date.GetValueOrDefault() < MaxDate;
}

是否可以重写 if 语句以使其使用空合并运算符?

4

1 回答 1

7

您可以将整个功能替换为

return date.GetValueOrDefault() < MaxDate && Date > MinDate;

GetValueOrDefault()如果它为空,它将返回一个空DateTime(即DateTime.MinValue),而不是> MaxDate

你也可以明确地写出来:

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

但是,您甚至不需要:

return Date > MinDate && date < MaxDate;

可空类型提升了在参数为空时返回 false 的比较运算符。

于 2011-11-08T00:32:22.383 回答