Sobes.tech
Junior — Middle

Kā darbojas atsauces datu tipi atmiņā un kā tie atšķiras no vērtības tipiem?

sobes.tech AI

Atbilde no AI

C# valodā ir divi galvenie datu tipi: vērtību tipi (value types) un atsauces tipi (reference types).

  • Vērtību tipi tieši glabā datus atmiņā, kur tie ir deklarēti. Piemēram, int, struct. Pie piešķiršanas, vērtība tiek kopēta, un katra mainīgā satur savu kopiju.

  • Atsauces tipi glabā mainīgajā ne pašus datus, bet atsauci (norādītāju) uz atmiņas apgabalu, kur dati atrodas. Piemēram, class, string. Pie piešķiršanas, tiek kopēta tikai atsauce, ne objekts, tāpēc vairāki mainīgie var norādīt uz to pašu objektu.

Piemērs:

int a = 5;
int b = a; // vērtības kopija
b = 10;
// a joprojām ir 5

class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // atsauces kopija
p2.Name = "Пётр";
// p1.Name arī ir "Пётр", jo p1 un p2 norāda uz to pašu objektu

Šādā veidā, atsauces tipi ļauj strādāt ar vienu objektu no dažādām mainīgajām, kamēr vērtību tipi glabā neatkarīgas datu kopijas.