Junior — Middle
Můžete vysvětlit, čím se liší referenční typy od hodnotových typů v jazyce C#?
sobes.tech AI
Odpověď od AI
V C# jsou datové typy rozděleny na hodnotové typy (value types) a referenční typy (reference types).
- Hodnotové typy přímo ukládají data. Při přiřazení nebo předání do metody se kopíruje hodnota. Příklady:
int,double,struct. - Referenční typy ukládají odkaz na oblast paměti, kde jsou data uložena. Při přiřazení se kopíruje pouze odkaz, nikoli data samotná. Příklady:
class,string, pole.
Příklad:
int a = 5;
int b = a; // b dostane kopii hodnoty 5
b = 10; // a zůstane 5
class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // p2 a p1 odkazují na stejný objekt
p2.Name = "Bob"; // nyní je p1.Name také "Bob"
Tímto způsobem se změny v referenčních typech přes jednu proměnnou odrážejí na všech odkazech, zatímco u hodnotových typů nikoli.