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.