Junior — Middle
Jak fungují referenční datové typy v paměti a jak se liší od hodnotových typů?
sobes.tech AI
Odpověď od AI
V jazyce C# existují dva hlavní typy dat: hodnotové typy (value types) a referenční typy (reference types).
-
Hodnotové typy ukládají data přímo v paměti, kde jsou deklarovány. Například
int,struct. Při přiřazení se hodnota zkopíruje, a každá proměnná má svou vlastní kopii. -
Referenční typy v proměnné neukládají data samotná, ale odkaz (ukazatel) na oblast paměti, kde jsou data umístěna. Například
class,string. Při přiřazení se kopíruje pouze odkaz, nikoliv objekt, takže několik proměnných může odkazovat na stejný objekt.
Příklad:
int a = 5;
int b = a; // kopie hodnoty
b = 10;
// a je stále 5
class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // kopie odkazu
p2.Name = "Пётр";
// p1.Name je také "Пётр", protože p1 a p2 odkazují na stejný objekt
Tímto způsobem umožňují referenční typy pracovat s jedním objektem z různých proměnných, zatímco hodnotové typy ukládají nezávislé kopie dat.