Haben Sie schon einmal versucht, die Convert.ChangeType()
Methode zu verwenden, um einen Wert in einen Nullable<T>
Typ zu konvertieren? Unbeholfen wirft es einen InvalidCastException
Sprichwort "Null-Objekt kann nicht in einen Werttyp konvertiert werden".Warum wird Nullable <T> als Werttyp betrachtet?
Versuchen Sie, diese auf Ihrem sofortigen Fenster: ?System.Convert.ChangeType(null, typeof(int?))
aus unerfindlichen Gründen, nullables sind Typen betrachtet Wert. Zum Beispiel gibt typeof(int?).IsValueType
true
zurück.
Für mich, seit Nullable<T>
akzeptieren null
, es ist ein Klassentyp, kein Werttyp. Weiß jemand, warum es anders umgesetzt würde?
Das seltsame Boxverhalten dauert eine Weile, aber ich bin froh, dass es so ist; andernfalls würde viel von dem Wert von Nullable (der von Wert kommt, der Transparenz überschreitet) verloren gehen. –
LBushkin
Eigentlich war das Boxverhalten eine Änderung, die spät im Entwicklungszyklus von .NET 2.0 geschah. In frühen Betas war 'Nullable' eine einfache Struktur. In der Praxis, wenn Sie tatsächlich Nullable-Typen verwenden, um nicht vorhandene Werte zu speichern, empfinde ich dieses Verhalten auch als natürlicher. –
Tolle zusätzliche Informationen übrigens – Nick