Sobes.tech
Junior — Middle

Czym różnią się typy danych referencyjnych od typów wartości w programowaniu?

sobes.tech AI

Odpowiedź od AI

W C# typy danych dzielą się na typy wartościowe (value types) i typy referencyjne (reference types).

Typy wartościowe przechowują dane bezpośrednio. Przy przypisaniu lub przekazaniu do metody, kopiowana jest sama wartość. Przykłady: int, double, struct, bool.

Typy referencyjne przechowują odwołanie do obszaru pamięci, w którym znajdują się dane. Przy przypisaniu kopiowane jest odwołanie, a nie same dane, więc kilka zmiennych może wskazywać na ten sam obiekt. Przykłady: class, string, array.

Przykład:

int a = 5;
int b = a; // kopiuje wartość 5
b = 10;
// a nadal jest 5

class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // kopiuje odwołanie
p2.Name = "Bob";
// p1.Name teraz jest "Bob"

Podsumowując, główna różnica polega na sposobie przechowywania i kopiowania danych: typy wartościowe kopiują wartości, typy referencyjne kopiują odwołania do obiektów.