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

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

Answer: 
The .NET FCL generic collections:

```
List<T>
Dictionary<TKey, UValue>
SortedDictionary<TKey, UValue>
Stack<T>
Queue<T>
LinkedList<T>

```

were all designed to overcome the performance issues of boxing and unboxing in previous collection implementations.

For more, see chapter 16, [*CLR via C# (2nd Edition)*](http://books.google.com/books?id=C-V_AAAACAAJ&dq=clr+via+c%23&ei=tyKnSPqSI5T2iQHzwJTECQ).
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.

```