有没有更好的方法来比较可以为null的日期
本文关键字:null 日期 比较 更好 方法 有没有 | 更新日期: 2023-09-27 18:30:07
我正在尝试确定两个可为null的日期之间是否存在差异。有比这更优雅的方法吗:
if (newDate.HasValue && (!oldDate.HasValue || (oldDate.HasValue && oldDate.Value.Date != mewDate.Value.Date)))
C#编译器会自动将==
和!=
等逻辑运算符提升到nullable类型上,因此您通常可以直接比较它们,而不是检查HasValue
。在这种情况下,一旦检查了newDate
不为空,就可以与!=
进行比较。
if(newDate.HasValue && newDate != oldDate)
规范中有描述:
7.3.7升降机操作员
升降机操作员允许预定义和用户定义的操作员对不可为null的值类型进行操作,以便也与nullable一起使用这些类型的形式。
对于相等运算符===!=如果操作数类型都是不可为null的值类型,并且结果类型是bool,则存在运算符的提升形式。这个提升模板是通过添加单个?每个的修饰符操作数类型。提升操作员认为两个零值相等,并且不等于任何非零值的零值。如果两个操作数都是非null时,提升运算符将展开操作数并应用生成布尔结果的底层运算符。