Ich habe Probleme mit einer Nullable DateTime in VB.NET (VS 2010).
Methode 1
%Vor%Methode 2
%Vor%Wenn eine leere Zeichenfolge angegeben wird Methode 1 weist gauge.LastCalibrationDate einen Wert Null (Nothing) zu, aber Methode 2 weist ihm den Wert DateTime.MinValue zu.
An anderen Stellen in meinem Code habe ich:
%Vor%Dies weist Null (Nothing) von einem ternären Operator korrekt einer Nullable DateTime zu.
Was vermisse ich? Danke!
Ich gebe zu, dass ich kein Experte darin bin, aber anscheinend stammt er von zwei Dingen ab:
If
kann nur einen Typ zurückgeben, in diesem Fall einen Datumstyp und keinen Nullwerttyp Nothing
-Wert ist nicht tatsächlich null
, sondern entspricht dem Standardwert des angegebenen Typs, in diesem Fall ein Datum, kein Nullable-Datum. Daher der Mindestwert für das Datum. Ich habe die meisten Informationen für diese Antwort aus diesem SO-Post abgeleitet: Ternärer Operator VB vs C #: Warum wird in Ganzzahl und nicht Integer aufgelöst?
Hoffe, dass das hilft und dass jemand wie Joel Coehoorn mehr Licht auf das Thema werfen kann.
Bob Mc hat Recht. Achten Sie besonders auf seinen zweiten Punkt - das ist in C # nicht der Fall.
Sie müssen Nothing
auf eine nullbare DateTime erzwingen, indem Sie sie wie folgt umwandeln:
Hier ist ein Ausschnitt, um zu demonstrieren:
%Vor% Anstelle des Castings können Sie auch ein neues Nullable angeben: New Nullable(Of DateTime)
oder New DateTime?()
. Das letztere Format sieht ein wenig seltsam aus, aber es ist gültig.
Tags und Links datetime vb.net nullable ternary-operator