Sobes.tech
Junior — Middle

Как работят референтните типове данни в паметта и как се различават от стойностните типове?

sobes.tech AI

Отговор от AI

В C# има два основни типа данни: типове стойност (value types) и типове препратка (reference types).

  • Типовете стойност съхраняват данните директно в паметта, където са обявени. Например, int, struct. При присвояване, стойността се копира, и всяка променлива държи своя собствена копие.

  • Типовете препратка съхраняват в променливата не самите данни, а препратка (указател) към областта памет, където са разположени данните. Например, class, string. При присвояване, се копира само препратката, не обектът, така че няколко променливи могат да сочат към един и същ обект.

Пример:

int a = 5;
int b = a; // копие на стойността
b = 10;
// a все още е 5

class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // копие на препратката
p2.Name = "Пётр";
// p1.Name също е "Пётр", тъй като p1 и p2 сочат към един и същи обект

По този начин, типовете препратка позволяват работа с един обект от различни променливи, а типовете стойност съхраняват независими копия на данните.