Junior — Middle
Czy możesz wyjaśnić, czym różnią się typy referencyjne od typów wartości w języku C#?
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, wartość jest kopiowana. Przykłady:
int,double,struct. - Typy referencyjne przechowują odwołanie do obszaru pamięci, w którym znajdują się dane. Przy przypisaniu kopiowane jest odwołanie, nie same dane. Przykłady:
class,string, tablice.
Przykład:
int a = 5;
int b = a; // b otrzymuje kopię wartości 5
b = 10; // a pozostanie 5
class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // p2 i p1 odwołują się do tego samego obiektu
p2.Name = "Bob"; // teraz p1.Name też jest "Bob"
W ten sposób zmiany w typach referencyjnych przez jedną zmienną odzwierciedlają się na wszystkich odwołaniach, a w typach wartości — nie.