2010-12-28 13 views

Antwort

17

Ja Ausnahme in der zweiten Zeile des Codes steigen, es ist richtig. Von documentation

Die Textdarstellung des Wertes des aktuellen Nullable<T> Objekts, wenn die HasValue Eigenschaft wahr ist, oder eine leere Zeichenfolge (""), wenn die HasValue Eigenschaft falsch ist.

Beachten Sie auch, dass Nullable<T>.Equals und Nullable<T>.GetHashCode nicht in diesem Fall werfen, aber die Nullable<T>.GetTypetut 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).

+0

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 –

+0

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

Verwandte Themen