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 сочат към един и същи обект
По този начин, типовете препратка позволяват работа с един обект от различни променливи, а типовете стойност съхраняват независими копия на данните.