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.