Überprüfen Sie bitte folgenden CodeIst Nullable DateTime korrekt?
DateTime? tmp = new DateTime();
tmp = null;
return tmp.ToString();
Es String.Empty
zurückgibt.
Ist es richtig?
Vielleicht ist es besser sein wird
Überprüfen Sie bitte folgenden CodeIst Nullable DateTime korrekt?
DateTime? tmp = new DateTime();
tmp = null;
return tmp.ToString();
Es String.Empty
zurückgibt.
Ist es richtig?
Vielleicht ist es besser sein wird
Ja Ausnahme in der zweiten Zeile des Codes steigen, es ist richtig. Von documentation
Die Textdarstellung des Wertes des aktuellen
Nullable<T>
Objekts, wenn dieHasValue
Eigenschaft wahr ist, oder eine leere Zeichenfolge (""
), wenn dieHasValue
Eigenschaft falsch ist.
Beachten Sie auch, dass Nullable<T>.Equals
und Nullable<T>.GetHashCode
nicht in diesem Fall werfen, aber die Nullable<T>.GetType
tut Wurf. Dies liegt daran, Object.Equals
, Object.GetHashCode
und Object.ToString
sind für Nullable<T>
überschrieben, aber das Object.GetType
ist nicht (weil es nicht sein kann, wie es nicht als virtual
markiert ist).
ok, danke für deine Antwort. aber wie denkst du ist es richtig? denn wenn Sie String tmp = null verwenden; tmp.ToString() wird ausgelöst Ausnahme –
Da ein NULL-fähiger Typ mit 'HasValue' als false keine 'Null'-Referenz ist. Aus konzeptioneller Sicht stellt ein nullwertfähiger Typ einen Werttyp mit der Möglichkeit dar, dass der Wert "fehlt". Wir verwenden 'null', um darzustellen, wenn der Wert fehlt, aber dies ist nicht dasselbe wie eine 'Null'-Referenz. Beachten Sie, dass "tmp.Value" den Fall auslöst, dass "tmp" eine Instanz eines Nullable-Typs mit "HasValue" als false ist. Der Wert fehlt, daher sollte und sollte versucht werden, diesen Wert zu erhalten. – jason