Junior — Middle
Ako fungujú referenčné typy údajov v pamäti a ako sa líšia od hodnotových typov?
sobes.tech AI
Odpoveď od AI
V jazyku C# existujú dva hlavné typy údajov: hodnotové typy (value types) a referenčné typy (reference types).
-
Hodnotové typy ukladajú údaje priamo v pamäti, kde sú deklarované. Napríklad,
int,struct. Pri priraďovaní sa hodnota skopíruje, a každá premenná má svoju vlastnú kópiu. -
Referenčné typy v premennej neukladajú samotné údaje, ale odkaz (ukazovateľ) na oblasť pamäti, kde sú údaje umiestnené. Napríklad,
class,string. Pri priraďovaní sa skopíruje iba odkaz, nie objekt, takže niekoľko premenných môže odkazovať na ten istý objekt.
Príklad:
int a = 5;
int b = a; // kópia hodnoty
b = 10;
// a stále 5
class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // kópia odkazu
p2.Name = "Пётр";
// p1.Name je tiež "Пётр", pretože p1 a p2 odkazujú na ten istý objekt
Týmto spôsobom umožňujú referenčné typy pracovať s jedným objektom z rôznych premenných, zatiaľ čo hodnotové typy ukladajú nezávislé kópie údajov.