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