Sobes.tech
Junior — Middle

Jak działają typy danych referencyjnych w pamięci i jak różnią się od typów wartości?

sobes.tech AI

Odpowiedź od AI

W C# istnieją dwa główne typy danych: typy wartości (value types) i typy referencyjne (reference types).

  • Typy wartości przechowują dane bezpośrednio w pamięci, w miejscu ich deklaracji. Na przykład int, struct. Przy przypisaniu, wartość jest kopiowana, i każda zmienna posiada własną kopię.

  • Typy referencyjne przechowują w zmiennej nie dane same, lecz odwołanie (wskaźnik) do obszaru pamięci, gdzie dane są umieszczone. Na przykład class, string. Przy przypisaniu, kopiowane jest odwołanie, nie obiekt, więc kilka zmiennych może wskazywać na ten sam obiekt.

Przykład:

int a = 5;
int b = a; // kopia wartości
b = 10;
// a nadal 5

class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // kopia odwołania
p2.Name = "Пётр";
// p1.Name też "Пётр", ponieważ p1 i p2 wskazują na ten sam obiekt

W ten sposób, typy referencyjne pozwalają pracować z jednym obiektem z różnych zmiennych, a typy wartości przechowują niezależne kopie danych.