Adam Rackis Adam Rackis -4 years ago 147
C# Question

Casting a boxed value

Why can't an

that's been boxed be directly cast to

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

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

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 Source

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.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download