Junior
Qual é a diferença entre tipos de referência e tipos de valor?
sobes.tech IA
Resposta da IA
Diferenças na forma de armazenar e transmitir dados:
-
Tipos de valor (Value Types):
- São armazenados diretamente onde foram declarados (na pilha ou dentro de uma instância de tipo valor).
- Ao atribuir ou passar por valor, é criada uma cópia do valor.
- Incluem tipos primitivos (int, float, bool, etc.), estruturas (struct) e enumerações (enum).
- São selados (sealed) e não podem ser herdados.
-
Tipos de referência (Reference Types):
- São armazenados no heap. A variável contém não o valor em si, mas uma referência ao endereço no heap.
- Ao atribuir ou passar por valor, apenas a referência é copiada, não o objeto em si.
- Incluem classes (class), interfaces (interface), delegados (delegate) e arrays (array).
- Podem suportar herança.
- O coletor de lixo gerencia a liberação de memória dos objetos de tipos de referência aos quais não há referências ativas.
// Exemplo de tipo de valor (struct)
struct Point
{
public int X;
public int Y;
}
// Exemplo de tipo de referência (class)
class Circle
{
public int Radius;
}
| Característica | Tipos de valor | Tipos de referência |
|---|---|---|
| Local de armazenamento | Pilha ou dentro de uma instância de tipo valor | Heap |
| Transferência/Atribuição | Cópia do valor | Cópia da referência |
| Herança | Não | Sim |
| Gestão de memória | Automática (pilha) | Coletor de lixo |