Wenn Sie das tun, sind Sie implizit das Dezimalsystem d
auf ein Basisobjekt Boxen:
object o = d;
Sie nicht boxed Werte direkt werfen können, ohne zuerst Unboxing sie, weshalb fehlschlägt direkt an ein int, wie folgt, im folgenden:
int x = (int)o;
jedoch, indem Sie diese (intermediär in eine Dezimalzahl ersten Casting):
int x = (int)(decimal)o;
Sie sind erste Unboxing o
, was bedeutet, dass Sie den Dezimalwert abrufen, dann die unboxed Dezimalwert Gießen zu einem int, was funktioniert, weil C# das Versetzen von Dezimalzahlen in Ints unterstützt.
möglich Duplikat [? Warum ich einen int als Dezimalzahl unbox nicht kann] (http://stackoverflow.com/questions/1085097/why-cant-i -unbox-an-int-wie-eine-Dezimal) – nawfal