Junior — Middle
Explique as diferenças entre os processos de implantação e empacotamento de objetos, bem como entre passar parâmetros por referência e por valor no contexto do trabalho com tipos de referência e estruturas.
sobes.tech IA
Resposta da IA
Em C#:
Boxing (embalagem) — processo de converter um valor de tipo (tipo de valor, por exemplo, uma estrutura) em um objeto de tipo referência (object). Isto cria uma cópia do valor no heap.
Unboxing (desembalagem) — processo inverso, extrair o valor do objeto de volta para o tipo de valor.
Exemplo:
int x = 123; // tipo de valor
object o = x; // boxing
int y = (int)o; // unboxing
Passagem de parâmetros:
- Por valor (padrão para tipos de valor): o valor é copiado, alterações dentro do método não afetam o original.
- Por referência (ref, out): é passada a referência para a variável, alterações dentro do método afetam o original.
Para tipos de referência, é passada uma cópia da referência, mas não do objeto. Alterações nos campos do objeto dentro do método são visíveis de fora, mas a reatribuição da referência não.
Resumindo:
- Embalagem — envolver um tipo de valor em um object.
- Desembalagem — extrair o tipo de valor do object.
- Passagem por valor — cópia dos dados.
- Passagem por referência — passar a referência aos dados.