Sobes.tech
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.