Значимые типы и ссылочные — в чём разница? Где хранятся, что к ним относится?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

В 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"

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку