我试图通过结合声明和可空日期时间的验证来压缩代码(因为我想以特定格式存储时间戳,而DateTime.MinValue在某些情况下实质上会导致溢出)。
下面的代码显示了两种验证方法:
Dim provider As Globalization.CultureInfo = System.Globalization.CultureInfo.InvariantCulture
Dim style As Globalization.DateTimeStyles = Globalization.DateTimeStyles.None
Dim xe As New XElement("DT")
Debug.Print(IsNothing(xe))
Debug.Print(xe.IsEmpty)
Dim dt As DateTime? = If(xe.IsEmpty, Nothing, Date.ParseExact(xe.Value, "yyyyMMddHHmmss", Provider, style))
Debug.Print(dt)
dt = Nothing
Debug.Print(IsNothing(dt))
Dim dt2 As DateTime?
If Not xe.IsEmpty Then dt2 = Date.ParseExact(xe.Value, "yyyyMMddHHmmss", provider, style)
Debug.Print(IsNothing(dt2))
输出确认xe IsEmpty和xe不是Nothing,而是dt = DateTime.MinValue而不是Nothing,而dt2(正确)是Nothing。
有人可以指出我想念的显而易见的东西吗,为什么是dt <> dt2?
谢谢!