c# - 使用空合并运算符进行比较

标签 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 合并运算符?

最佳答案

您可以将整个函数替换为

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

GetValueOrDefault() 将返回一个空的 DateTime(即 DateTime.MinValue),如果它为 null,则不会 > 最大日期

你也可以明确地写:

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

但是,您甚至不需要:

return Date > MinDate && date < MaxDate;

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

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

相关文章:

c# - 如何在 C# 中创建具有只读访问权限的共享文件夹?

c# - Entity Framework 核心映射问题

python - Python 链式属性访问中的无传播

sql - ORACLE SQL : How do I replace NULL with 0 in a Pivot function

C# 合并运算符抛出

c# - 日志记录的扩展方法。一个好主意?

c# - 合并可能为空的 LINQ 查询结果

PHP null合并+三元运算符奇怪的行为

c# - .NET Reflector 是否无法正确反射(reflect) null 合并运算符?

c# - 在这个相对简单的程序中得到 'out of memory' 异常