Sobes.tech
Junior — Middle

Como funcionam os tipos de dados de referência na memória e como eles diferem dos tipos de valor?

sobes.tech IA

Resposta da IA

No C# existem dois tipos principais de dados: tipos de valor (value types) e tipos de referência (reference types).

  • Tipos de valor armazenam os dados diretamente na memória onde são declarados. Por exemplo, int, struct. Ao atribuir, o valor é copiado, e cada variável mantém sua própria cópia.

  • Tipos de referência armazenam na variável não os dados em si, mas uma referência (ponteiro) para a área de memória onde os dados estão. Por exemplo, class, string. Ao atribuir, apenas a referência é copiada, não o objeto, permitindo que várias variáveis apontem para o mesmo objeto.

Exemplo:

int a = 5;
int b = a; // cópia do valor
b = 10;
// a ainda é 5

class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // cópia da referência
p2.Name = "Пётр";
// p1.Name também é "Пётр", pois p1 e p2 apontam para o mesmo objeto

Dessa forma, tipos de referência permitem trabalhar com um mesmo objeto de diferentes variáveis, enquanto tipos de valor armazenam cópias independentes dos dados.