Boxing e Unboxing

watch_later 5 de abr de 2013

No .NET Framework os tipos de dados se dividem em dois tipos value types e reference types. O .NET Framework armazena os value types em uma área de memória chamada stack e os references types , em uma área da memória chamada heap. Os Objetos armazenados na heap são coletados pelo Garbage Collector.
Boxing é a conversão explicita de um value type um um tipo object . Assim , um value type aloca uma instância do objeto no heap e copia o valor no novo objeto.
int i = 500;
object o = i;

Unboxing é o contrário ; é a conversão explicita de um tipo object para um value type.
int i = 500;
object o = i; //Boxing
int x = (int)o; //Unboxing

Nota:
Devemos tomar cuidado com Boxing e Unboxing pois ele podem prejudicar muito a performance da aplicação , pois o primeiro pode aumentar o tempo de execução da tarefa em 20 vezes, e o segundo , por sua vez , aumenta o tempo de execução da tarefa em 4 vezes.