给定方法:

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

    return date.GetValueOrDefault() < MaxDate;
}


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

最佳答案

您可以将整个功能替换为

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


GetValueOrDefault()如果为空,则将返回一个空的DateTime(即DateTime.MinValue),并且不会为> MaxDate

您也可以明确地编写:

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


但是,您甚至不需要:

return Date > MinDate && date < MaxDate;


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

关于c# - 使用空合并运算符进行比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8044567/

10-08 21:33