有没有更好的方法来比较可空日期?

时间:2013-09-02 21:18:43

标签: c# datetime nullable

我正在尝试确定2个可空日期之间是否存在差异。 。是否有更优雅的方式而不是:

  if (newDate.HasValue && (!oldDate.HasValue ||  (oldDate.HasValue && oldDate.Value.Date != mewDate.Value.Date)))

1 个答案:

答案 0 :(得分:1)

C#编译器会自动提升==!=等逻辑运算符而不是nullalbe类型,因此您通常可以直接比较它们而不是检查HasValue。在这种情况下,您可以在检查!=不为空后与newDate进行比较。

if(newDate.HasValue && newDate != oldDate)

在说明书中描述:

  

7.3.7解除运营商

     

提升的运营商允许预定义和用户定义的运营商   对非可空值类型进行操作也可以与可空字段一起使用   这些类型的形式。

     

对于相等运算符   ==!=如果操作数类型都是非可空值类型且结果类型为bool,则存在提升形式的运算符。   提升形式是通过添加一个?每个修饰符   操作数类型。提升的运算符认为两个空值相等,和   null值不等于任何非null值。如果两个操作数都是   非空,提升的运算符解包操作数并应用   底层算子产生布尔结果。