Sobes.tech
Junior — Middle

¿En qué se diferencian los tipos de referencia de los tipos de valor en C# y cuáles son sus principales diferencias en su uso?

sobes.tech AI

Respuesta de la IA

En C#, los tipos se dividen en tipos de valor (value types) y tipos de referencia (reference types).

Los tipos de valor almacenan los datos directamente. Ejemplos: int, double, struct. Al asignar o pasar a un método, se copia el valor en sí, es decir, se crea una copia independiente.

Los tipos de referencia almacenan una referencia a un objeto en la memoria (en el montón). Ejemplos: class, string, arreglos. Al asignar, se copia la referencia, no el objeto, por lo que varias variables pueden referirse al mismo objeto.

Diferencias principales:

  • Almacenamiento: los tipos de valor generalmente en la pila, los de referencia en el montón.
  • Copia: los tipos de valor se copian por valor, los de referencia por referencia.
  • Comportamiento al modificar: modificar un tipo de valor no afecta a otras copias, modificar un objeto de tipo referencia se refleja en todas las referencias.

Ejemplo:

int a = 5;
int b = a; // copia del valor
a = 10; // a seguirá siendo 5

class Persona { public string Nombre; }
Persona p1 = new Persona { Nombre = "Иван" };
Persona p2 = p1; // copia de la referencia
p2.Nombre = "Пётр"; // p1.Nombre también cambiará a "Пётр"