Unable to cast object of type 'System.DateTime' to type 'System.String'
Immer ein Fehler, dass hat mich etwas verblüfft. Ich nehme an, es ist etwas einfach, aber kann nicht scheinen, um diese Figur ein, das ist der code, der den Fehler verursacht:
if ((string) _nullableDateTimePicker1.Value != string.Empty && _nullableDateTimePicker1.Value != null) {
_nullableDateTimePicker1.Value = null;
}
Beim Klick auf den suchen-button in meine windows form, das ist es, was ich aufspringen:
Unable to cast object of type 'System.DateTime' to type 'System.String'.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es erscheint der Typ der nullable-Typ Instanz
_nullableDateTimePicker1
istDateTime
, die nicht eine saite, Sie müsste vergleichen mit einemDateTime
oder konvertieren, die in einen string.So, im einfachsten Sinne:
Aber Hüte dich vor der Gefahr, die Prüfung nicht
HasValue
, als würde einNullReferenceException
wennValue
istnull
; So, Ihr Scheck ist ein wenig nach hinten.Und selbst dann, wenn es war nicht
null
, Sie würden eineDateTime.MinValue
, und soToString
würde nicht eine leere Zeichenfolge zurück. Überprüfen Sie deshalb fürnull
auf die nullable-Ding, und wenn nichtnull
vergleichen zuDateTime.MinValue
(es sei denn es ist eine Eigenart speziell in deinem code, was bedeutet, dass es könnte eine verschiedenen 'default'.DateTime
hat immer einen Wert (wenn nicht null)._nullableDateTimePicker1.HasValue
die Prüfung_nullableDateTimePicker1.Value.ToString() != string.Empty
wird immer wahr sein.if ((string) _nullableDateTimePicker1.Value .....
Wahrscheinlich
_nullableDateTimePicker1.Value
gibt eineDateTime
. Als die Nachricht erläutert, können Sie nicht direkt gewirktDateTime
zu einemstring
.In diesem Teil
(string) _nullableDateTimePicker1.Value != string.Empty
Sie versuchen zu casten-Wert zu string. AberValue
istDateTime
. Der zweite Teil dieser, wenn genug ist.wirft die Ausnahme, wenn _nullableDateTimePicker1 null ist.
Nicht verwenden
(string)
wenn Sie versuchen, um zu überprüfen, wenn der Wert nicht nullSollte dieser code funktionieren:
Es sieht aus wie Ihre
_nullableDateTimePicker1
Objekt ist einNullable<DateTime>
(DateTime?
), in welchem Fall Sie diese Fehlermeldung bekommen, da kann man nicht casten zu einem string.Es sieht aus wie Sie sind nur versuchen, um sicherzustellen, dass es einen gültigen DateTime-Wert, in dem Fall brauchen Sie nur zu tun die null-check. Ohne genau zu wissen, was Sie versuchen zu tun, das ist mein Rat.
DateTimePicker.Wert gibt DateTime-Typ können Sie nicht wirken, string, was Sie brauchen, ist die Konvertierung zum string.
so wird sich der code:
Ich bin mir nicht sicher über die Einstellung der DateTimePicker Wert auf null.