Junior — Middle
Kako funkcionišu referentni tipovi podataka u memoriji i kako se razlikuju od vrednosnih tipova?
sobes.tech АИ
Одговор од АИ
U C# postoje dva osnovna tipa podataka: tipovi vrednosti (value types) i tipovi referenci (reference types).
-
Tipovi vrednosti direktno čuvaju podatke u memoriji gde su deklarisani. Na primer,
int,struct. Pri dodeljivanju, vrednost se kopira, i svaka promenljiva drži svoju kopiju. -
Tipovi referenci u promenljivoj ne čuvaju same podatke, već referencu (pokazivač) na memorijsku oblast gde su podaci smešteni. Na primer,
class,string. Pri dodeljivanju, kopira se samo referenca, a ne objekat, tako da više promenljivih može ukazivati na isti objekat.
Primer:
int a = 5;
int b = a; // kopija vrednosti
b = 10;
// a i dalje 5
class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // kopija reference
p2.Name = "Пётр";
// p1.Name takođe je "Пётр", jer p1 i p2 ukazuju na isti objekat
Na ovaj način, reference tipovi omogućavaju rad sa istim objektom iz različitih promenljivih, dok vrednosti tipovi čuvaju nezavisne kopije podataka.