Sobes.tech
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