Question: I'm looking for a clear, concise and accurate answer. 

Ideally as the actual answer, although links to good explanations welcome.

Answer: 
from [C# 3.0 In a Nutshell](http://books.google.com/books?id=_Y0rWd-Q2xkC&pg=PA81&vq=boxing&source=gbs_search_r&cad=1_1&sig=ACfU3U0SIw4v8UZzMH3f5xImIyHZHD90sA#PPA82,M1):

> 
> Boxing is the act of casting a value
>  type into a reference type:
> 
> 
> 

```
int x = 9; 
object o = x; // boxing the int

```

> 
> unboxing is... the reverse:
> 
> 
> 

```
// unboxing o
object o = 9; 
int x = (int)o; 

```
Boxing and unboxing facilitates value types to be treated as objects. Boxing means converting a value to an instance of the object reference type. For example, `Int` is a class and `int` is a data type. Converting `int` to `Int` is an exemplification of boxing, whereas converting `Int` to `int` is unboxing. The concept helps in garbage collection, Unboxing, on the other hand, converts object type to value type.

```
int i=123;
object o=(object)i; //Boxing

o=123;
i=(int)o; //Unboxing.

```