Unboxing Conversion
Collapse the table of content
Expand the table of content
The document is archived and information here might be outdated

Unboxing Conversion

Visual Studio .NET 2003

Unboxing is an explicit conversion from the type object to a value type or from an interface type to a value type that implements the interface. An unboxing operation consists of:

  • Checking the object instance to make sure it is a boxed value of the given value type.
  • Copying the value from the instance into the value-type variable.

The following statements demonstrate both boxing and unboxing operations:

int i = 123;          // A value type
object box = i;       // Boxing
int j = (int)box;     // Unboxing

The following figure demonstrates the result of the preceding statements.

Unboxing Conversion

For an unboxing conversion to a given value type to succeed at run time, the value of the source argument must be a reference to an object that was previously created by boxing a value of that value type. If the source argument is null or a reference to an incompatible object, an InvalidCastException is thrown.


The following example demonstrates a case of invalid unboxing, of how incorrect unboxing leads to InvalidCastException. By using try and catch, an error message is displayed when the error occurs.

using System;
public class UnboxingTest 
   public static void Main() 
      int intI = 123;

      // Boxing
      object o = intI;

      // Reference to incompatible object produces InvalidCastException
         int intJ = (short) o;
         Console.WriteLine("Unboxing OK.");

      catch (InvalidCastException e) 
         Console.WriteLine("{0} Error: Incorrect unboxing.",e);


   at UnboxingTest.Main() Error: Incorrect unboxing.

If you change the statement:

int intJ = (short) o;


int intJ = (int) o;

the conversion will be performed, and you will get the output Unboxing OK.

See Also

Boxing and Unboxing | Boxing Conversion

© 2016 Microsoft