Sobes.tech
Junior — Middle

Pode explicar a diferença entre os tipos de referência e os tipos de valor na linguagem C#?

sobes.tech IA

Resposta da IA

No 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 é copiado. Exemplos: int, double, struct.
  • Tipos de referência armazenam uma referência à área de memória onde os dados estão. Ao atribuir, apenas a referência é copiada, não os dados em si. Exemplos: class, string, arrays.

Exemplo:

int a = 5;
int b = a; // b recebe uma cópia do valor 5
b = 10; // a permanece 5

class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // p2 e p1 referenciam o mesmo objeto
p2.Name = "Bob"; // agora p1.Name também é "Bob"

Dessa forma, as alterações em tipos de referência através de uma variável refletem-se em todas as referências, enquanto nos tipos de valor, não.