Warum nach diesem Codefragment:doppelt? zu dezimal? Umwandlung
double? d = 123.4;
decimal? dec = (decimal?)d; //dec is null
ist dec Wert null?
Warum nach diesem Codefragment:doppelt? zu dezimal? Umwandlung
double? d = 123.4;
decimal? dec = (decimal?)d; //dec is null
ist dec Wert null?
ich auf .NET 2.0 getestet haben und .NET 4.0, und ich bekomme dec
als 123.4
, wie erwartet. Bist du dir sicher, dass du den Breakpoint nicht zu hoch hast?
Danke. Ich teste es erneut und es scheint als ob ein seltsames Verhalten von Visual Studio/Debugger. Wenn ich nach dem Ausführen der zweiten Zeile auf dec-Variable schwebe, sagt es, dass dec null ist, aber der tatsächliche dec-Wert ist wie erwartet 123,4 (zum Beispiel wenn ich es in die Konsole schreibe). Das lässt mich zuerst glauben, dass es nicht funktioniert. –
Meine beste Schätzung ist, dass die implizite Umwandlung, die in der Umwandlung aufgerufen wird, fehlschlägt, wobei dec mit einem Nullwert zurückbleibt, und nicht mit dem abgeschnittenen/gerundeten Wert, den Sie erwarten.
Dezember ist nicht null, seine 123,4
Es ist nicht null. Sie müssen anderswo einen Fehler haben.
Ich weiß, dass dies die gleiche Sache zeigen wird. Ihr Code gibt mir wie erwartet 123,4. Es funktioniert gut.
Ich kann nur sagen versuchen :) aber das Ergebnis ist dasselbe: 123,4
double? d = 123.4;
decimal? dec = (decimal?)d.Value;
Kann Ihr Problem nicht reproduzieren. Dezember ist 123.4 für mich – CodesInChaos