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

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

Ссылочные типы хранят ссылку на данные в куче, а значимые — сами данные в стеке (или в куче, если являются полями класса).

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

  1. Расположение: значимые — стек (быстрый доступ), ссылочные — куча (управляется GC).
  2. Присваивание: значимые копируются целиком, ссылочные — копируется только ссылка.
  3. Null: значимые не могут быть null (кроме Nullable<T>), ссылочные — могут.
  4. Наследование: значимые не могут наследоваться (кроме struct от ValueType).

Пример:

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

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

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

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

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