Adam Rackis Adam Rackis - 21 days ago 6
C# Question

Casting a boxed value

Why can't an

int
that's been boxed be directly cast to
double
?

object o = 12;
double d = (double)o;


That throw an invalid cast exception. Instead it seems it has to first be cast as an
int
, and then on to
double
.

object o = 12;
double d = (double)(int)o;


I'm sure the simple answer is "because that's how boxing works" but I'm hoping someone might shed a bit of light here.

Answer

Check out this question from earlier today: Why am I getting InvalidCastException?

Unboxing operations only succeed if the target type is exactly the same as the original type that was boxed, so an exception is thrown. This link that John Leidegren provided explains in detail.

Comments