Sobes.tech
Junior — Middle

Je reťazec vo väčšine programovacích jazykov referenčný typ alebo typ hodnoty?

sobes.tech AI

Odpoveď od AI

Vo väčšine programovacích jazykov sú reťazce (String) implementované ako referenčný typ, nie ako hodnotový typ.

Konkrétne, v C# je string referenčný typ, ktorý sa správa ako nemenný (immutable) objekt. To znamená:

  • Premenná typu string obsahuje odkaz na objekt v pamäti.
  • Pri zmene reťazca sa vytvorí nový objekt, existujúci sa nezmení.
  • Vďaka nemennosti je možné reťazce bezpečne používať v prostredí s viacerými vláknami a môžu byť cache-ované.

Toto sa líši od typov hodnoty (napríklad int, struct), ktoré sú uložené priamo v premennej a pri priraďovaní sa kopírujú.

Príklad:

string a = "hello";
string b = a;
a = "world"; // b je stále "hello", pretože reťazce sú nemenné a a teraz odkazuje na nový objekt