Quais são as desvantagens do boxing e unboxing em C#?
sobes.tech IA
Resposta da IA
Boxing e unboxing em C# são operações de empacotamento de tipos de valor (value types) em objetos (reference types) e sua extração inversa.
Desvantagens:
-
Perda de desempenho — ao fazer boxing, um novo objeto é criado no heap, o que requer tempo para alocação de memória e cópia do valor.
-
Carga adicional no coletor de lixo — os objetos criados durante o boxing requerem limpeza posterior, o que aumenta o trabalho do GC.
-
Risco de erros no unboxing — se o unboxing for feito para um tipo incorreto, uma exceção InvalidCastException é gerada.
-
Aumento no uso de memória — os objetos ocupam mais memória do que os valores originais.
Exemplo:
int x = 123;
object obj = x; // boxing
int y = (int)obj; // unboxing
Para minimizar essas desvantagens, recomenda-se evitar boxing/unboxing frequente, por exemplo, usando genéricos que trabalham com tipos sem embalagem.