Sobes.tech
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.