Junior — Middle
Kaip veikia nuorodų duomenų tipai atmintyje ir kaip jie skiriasi nuo reikšmės tipų?
sobes.tech AI
Atsakymas iš AI
C# kalboje yra du pagrindiniai duomenų tipai: reikšmės tipai (value types) ir nuorodų tipai (reference types).
-
Reikšmės tipai saugo duomenis tiesiogiai atmintyje, kur jie deklaruoti. Pavyzdžiui,
int,struct. Priskyrimo metu kopijuojama reikšmė, ir kiekviena kintamoji turi savo kopiją. -
Nuorodų tipai saugo kintamajame ne pačius duomenis, o nuorodą (rodyklį) į atminties sritį, kur duomenys yra išdėstyti. Pavyzdžiui,
class,string. Priskyrimo metu kopijuojama tik nuoroda, ne objektas, todėl keli kintamieji gali rodyti į tą patį objektą.
Pavyzdys:
int a = 5;
int b = a; // reikšmės kopija
b = 10;
// a vis dar 5
class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // nuorodos kopija
p2.Name = "Пётр";
// p1.Name taip pat "Пётр", nes p1 ir p2 rodo į tą patį objektą
Šiuo būdu, nuorodų tipai leidžia dirbti su vienu objektu iš skirtingų kintamųjų, o reikšmės tipai saugo nepriklausomas duomenų kopijas.