我的C#类有一个日期/时间属性,我将使用Code First映射到SQL Server数据库中的列。此日期永远不会超前或接近默认值(DateTime)。如果我将该属性键入System.DateTime
,那么我始终可以使用MyProp == default( DateTime )
检查未设置的值。
是否有令人信服的理由是否将此属性键入(可为空)DateTime?
而不是(不可为空)DateTime
?为什么呢?
答案 0 :(得分:1)
在我认为与某个记录ID相关时,某些类型的哨兵值(如整数)是有意义的。当零是合法值时(因为值也可能是负值),它就没有意义了。日期总是有意义所以null就像“我们不在何时”的价值一样提供更多信息。此外,我认为它使“给我所有记录,我们没有日期”查询看起来更清洁。