Sobes.tech
Junior — Middle

Explique as diferenças entre os processos de empacotamento e desempacotamento de valores numa linguagem de programação.

sobes.tech IA

Resposta da IA

No C#, o boxing é o processo de converter um valor de tipo (por exemplo, int, bool) em um objeto do tipo System.Object ou na interface que ele implementa. Ao fazer boxing, o valor é copiado para o heap gerenciado e envolvido em um objeto.

O unboxing é o processo inverso, no qual um objeto contendo um valor empacotado é convertido de volta para um valor do tipo original. Durante o unboxing, ocorre uma verificação de tipo e o valor é copiado do objeto para uma variável de tipo valor.

Exemplo:

int x = 123;       // tipo valor
object obj = x;    // boxing
int y = (int)obj;  // unboxing

O boxing e o unboxing afetam o desempenho, pois requerem alocação de memória e cópia de dados. Portanto, devem ser minimizados, especialmente em trechos críticos de código.