Встречается на 16% собеседований по C#

В чём разница между значимыми и ссылочными типами данных

Значимые типы хранят данные напрямую в стеке, работают быстрее, но имеют ограниченный размер. К ним относятся примитивы (int, bool, struct). При присваивании копируется значение.

Ссылочные типы хранят ссылку на данные в куче, что позволяет работать с большими объектами. К ним относятся классы, массивы, строки. При присваивании копируется ссылка, а не данные.

Пример:

csharp
// Значимый тип
int a = 5;
int b = a;  // Копируется значение
b = 10;     // a остаётся 5

// Ссылочный тип
var list1 = new List<int> {1, 2, 3};
var list2 = list1;  // Копируется ссылка
list2.Add(4);       // list1 тоже изменится

Ключевые отличия:

  • Место хранения (стек/куча)
  • Поведение при присваивании
  • Производительность
  • Размер объектов

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы