可为空的日期时间与依赖默认值( 日期时间 )

本文关键字:日期 时间 默认值 依赖 | 更新日期: 2023-09-27 18:37:28

我的 C# 类有一个日期/时间属性,我将使用该属性 Code First 映射到 SQL Server 数据库中的列。 此日期永远不会早于或接近默认值(日期时间)。 如果我将属性键入为 System.DateTime,那么我总是可以使用 MyProp == default( DateTime ) 检查未设置的值。

是否有令人信服的理由是否将此属性键入为(可为空)DateTime?而不是(不可为空)DateTime? 为什么?

可为空的日期时间与依赖默认值( 日期时间 )

在我看来,

某种类型的哨兵值(如整数)在与记录 ID 相关时是有意义的。当零是合法的 at 值时,它的意义就不大了(因为值也可能是负数)。日期总是有意义的,因此 null 作为"我们不知道何时"的值更具信息性。此外,我认为它使"给我所有没有日期的记录"查询看起来更干净。