Sobes.tech
Junior — Middle

Come funzionano i tipi di dati di riferimento in memoria e come si differenziano dai tipi di valore?

sobes.tech AI

Risposta dell'AI

In C# ci sono due tipi principali di dati: tipi di valore (value types) e tipi di riferimento (reference types).

  • I tipi di valore memorizzano i dati direttamente nella memoria dove sono dichiarati. Ad esempio, int, struct. Quando si assegna, il valore viene copiato, e ogni variabile mantiene la propria copia.

  • I tipi di riferimento memorizzano nella variabile non i dati stessi, ma un riferimento (puntatore) all'area di memoria dove i dati sono collocati. Ad esempio, class, string. Quando si assegna, viene coperto solo il riferimento, non l'oggetto, quindi più variabili possono puntare allo stesso oggetto.

Esempio:

int a = 5;
int b = a; // copia del valore
b = 10;
// a è ancora 5

class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // copia del riferimento
p2.Name = "Пётр";
// p1.Name è anche "Пётр", poiché p1 e p2 puntano allo stesso oggetto

In questo modo, i tipi di riferimento consentono di lavorare con un singolo oggetto da variabili diverse, mentre i tipi di valore memorizzano copie indipendenti dei dati.