2
Reply

What is boxing and unboxing ?

Prabhu Raja

Prabhu Raja

12y
27.1k
0
Reply

    Boxing


    Boxing is used to store value types in the garbage-collected heap. Boxing is an implicit conversion of a value type to the type object or to any interface type implemented by this value type. Boxing a value type allocates an object instance on the heap and copies the value into the new object.

    Consider the following declaration of a value-type variable:

    int i = 123;
    

    The following statement implicitly applies the boxing operation on the variable i:

    // Boxing copies the value of i into object o. object o = i;  
    

    The result of this statement is creating an object reference o, on the stack, that references a value of the type int, on the heap. This value is a copy of the value-type value assigned to the variable


    for example:(Consider follwing C# code)

    class TestBoxing
    {
    static void Main()
    {
    int i = 123;
    // Boxing copies the value of i into object o. object o = i;  
    // Change the value of i.
    i = 456;  
    // The change in i does not effect the value stored in o.
    System.Console.WriteLine("The value-type value = {0}", i);
    System.Console.WriteLine("The object-type value = {0}", o);
    }
    }
    /* Output:
    The value-type value = 456
    The object-type value = 123
    */

    Unboxing

    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 that it is a boxed value of the given value type.

    • Copying the value from the instance into the value-type variable.

      int i = 123;      // a value type object o = i;     // boxing int j = (int)o;   // unboxing
    Furthe Deatils Refer :Click Here.

    Implicit (manual) conversion of value type to reference type of a variable is
    known as BOXING, for example integer to object type conversion. Conversion of Boxed type variable back to value type is called as UnBoxing.