Sobes.tech
Junior — Middle

Jaký je rozdíl mezi významnými a referenčními objekty v programování?

sobes.tech AI

Odpověď od AI

В C# объекты делятся на значимые (value types) и ссылочные (reference types).

  • Значимые типы хранят данные непосредственно. Примеры: int, struct, bool. При присваивании или передаче в метод копируется само значение.
  • Ссылочные типы хранят ссылку на область памяти, где лежат данные. Примеры: class, string, массивы. При присваивании копируется ссылка, а не сам объект.

Основное отличие в том, что изменения значимого типа не влияют на другие копии, а изменения через ссылку отражаются на всех ссылках на этот объект.

Пример:

int a = 5;
int b = a; // копируется значение
b = 10;
// a == 5, b == 10

class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // копируется ссылка
p2.Name = "Bob";
// p1.Name == "Bob"