Я пытался сжать свой код, объединив объявление и проверку для даты и времени, допускающей значение NULL (потому что я хочу хранить метки времени в определенном формате, а 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 ??
Спасибо!
Ага. Если дубликат решил вашу проблему, его следует принять, а вопрос закрыть. Ответы только по ссылке не приветствуются. Я не возражаю, я рад, что смог помочь немногое, что я сделал!
Спасибо. Я собирался попросить вас опубликовать его в качестве ответа, чтобы я мог принять его, но, похоже, протокол должен принять «Это решило мою проблему»