三元组如果在vb.net中显示具有可空DateTime的奇怪行为

时间:2018-09-09 20:39:02

标签: vb.net datetime nullable ternary-operator

我试图通过结合声明和可空日期时间的验证来压缩代码(因为我想以特定格式存储时间戳,而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?

谢谢!

0 个答案:

没有答案