C# Type System contains three Types , they are Value Types ,
Reference Types and Pointer Types.
C# allows us to convert a Value Type to a Reference Type, and back
again to Value Types .
"The operation of Converting a Value Type to a Reference Type is
called Boxing and the reverse operation is called Unboxing".
Boxing
|
1:
int Val = 1;
|
|
2:
Object Obj = Val; //Boxing
|
The first line we created a Value Type Val and assigned a value to
Val. The second line , we created an instance of Object Obj and assign the
value of Val to Obj. From the above operation (Object Obj = i ) we saw
converting a value of a Value Type into a value of a corresponding
Reference Type . These types of operation is called Boxing.
UnBoxing
|
1:
int Val = 1;
2:
Object Obj = Val; //Boxing
3:
int i = (int)Obj; //Unboxing
|
The first two line shows how to Box a Value Type . The next line
(int i = (int) Obj) shows extracts the Value Type from the Object . That is
converting a value of a Reference Type into a value of a Value Type. This
operation is called UnBoxing.
Boxing and UnBoxing are computationally expensive processes. When
a value type is boxed, an entirely new object must be allocated and constructed
, also the cast required for UnBoxing is also expensive computationally.