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

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

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

Значимые типы хранят данные напрямую в стеке (или внутри других объектов):

  • struct, enum, примитивы (int, double, bool и т. д.).
  • Копируются по значению (при присваивании создается новая копия).
  • Не могут быть null (кроме Nullable<T>).

Ссылочные типы хранят ссылку на данные в куче:

  • class, interface, delegate, string, массивы.
  • Копируются по ссылке (изменения в одной переменной влияют на другую).
  • Могут быть null.

Пример:

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

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

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

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

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