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 "Пётр"