The following statements demonstrate both boxing and unboxing operations:
int i = 123; // a value typeThe following figure demonstrates the result of the previous statements.
object o = i; // boxing
int j = (int)o; // unboxing
Unboxing Conversion
For the unboxing of value types to succeed at run time, the item being unboxed must be a reference to an object that was previously created by boxing an instance of that value type. Attempting to unbox null causes a NullReferenceException. Attempting to unbox a reference to an incompatible value type causes an InvalidCastException.