Sobes.tech
Junior — Middle

Qual é a diferença entre tipos de dados de referência e tipos de valor na programação?

sobes.tech IA

Resposta da IA

Em C#, os tipos de dados dividem-se em tipos de valor (value types) e tipos de referência (reference types).

Tipos de valor armazenam os dados diretamente. Ao atribuir ou passar para um método, o valor em si é copiado. Exemplos: int, double, struct, bool.

Tipos de referência armazenam uma referência para uma área de memória onde os dados estão. Ao atribuir, a referência é copiada, não os dados em si, portanto várias variáveis podem apontar para o mesmo objeto. Exemplos: class, string, array.

Exemplo:

int a = 5;
int b = a; // copia o valor 5
b = 10;
// a ainda é 5

class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // copia a referência
p2.Name = "Bob";
// p1.Name agora é "Bob"

Assim, a principal diferença é a forma de armazenamento e cópia dos dados: tipos de valor copiam os valores, tipos de referência copiam referências aos objetos.