VB.NET - Nullable DateTime und Ternärer Operator
Ich habe Probleme mit einem Nullable DateTime in VB.NET (VS 2010).
Methode 1
If String.IsNullOrEmpty(LastCalibrationDateTextBox.Text) Then
gauge.LastCalibrationDate = Nothing
Else
gauge.LastCalibrationDate = DateTime.Parse(LastCalibrationDateTextBox.Text)
End If
Methode 2
gauge.LastCalibrationDate = If(String.IsNullOrEmpty(LastCalibrationDateTextBox.Text), Nothing, DateTime.Parse(LastCalibrationDateTextBox.Text))
Gegeben, wenn eine leere Zeichenfolge Methode 1 weist eine Null (Nichts) Wert zu Messen.LastCalibrationDate aber Methode 2 weist die DateTime.MinValue.
In anderen Orten in meinem code habe ich:
LastCalibrationDate = If(IsDBNull(dr("LastCalibrationDate")), Nothing, dr("LastCalibrationDate"))
Dies richtig weist Null (Nichts) aus einer Ternären Operator, um eine Nullable DateTime.
Was bin ich? Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gebe zu, ich bin kein Experte auf diesem, aber anscheinend ergibt sich aus zwei Dingen:
If
ternären operator kann zurückkehren, nur eine Art, in diesem Fall ein Datum, nicht eine nullable-DatentypNothing
Wert ist eigentlich nichtnull
aber entspricht dem Standardwert des angegebenen Typs, in diesem Fall ein Datum, nicht eine null-Datum. Daher das Datum minimum Wert.Ich abgeleitet, die die meisten Informationen für diese Antwort von diesem SO posten: Ternärer operator VB vs. C#: warum wird zu integer und nicht integer?
Hoffe, dass dies hilft und, dass jemand wie Joel Coehoorn kann mehr Licht auf das Thema.
Bob Mc ist korrekt. Achten Sie besonders auf seine zweite Punkt - dies ist nicht der Fall in C#.
Was Sie tun müssen, ist die Kraft
Nothing
zu einem nullable DateTime durch Gießen Sie es wie folgt:Hier ist ein Ausschnitt zu zeigen:
Statt Gießen kann man auch deklarieren Sie eine neue nullable:
New Nullable(Of DateTime)
oderNew DateTime?()
. Letzteres format sieht ein wenig seltsam, aber es ist gültig.