Sobes.tech
Junior — Middle

Je řetězec ve většině programovacích jazyků referenční typ nebo typ hodnoty?

sobes.tech AI

Odpověď od AI

Ve většině programovacích jazyků jsou řetězce (String) implementovány jako referenční typ, nikoli jako typ hodnoty.

Konkrétně v C# je string referenční typ, který se chová jako neměnný (immutable) objekt. To znamená:

  • Proměnná typu string obsahuje odkaz na objekt v paměti.
  • Při změně řetězce je vytvořen nový objekt, stávající není měněn.
  • Díky neměnnosti lze řetězce bezpečně používat v prostředí s více vlákny a lze je cachovat.

Toto se liší od typů hodnot (například int, struct), které jsou přímo uloženy v proměnné a při přiřazení se kopírují.

Příklad:

string a = "hello";
string b = a;
a = "world"; // b je stále "hello", protože řetězce jsou neměnné a a nyní odkazuje na nový objekt