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

Всегда ли значимые типы данных хранятся в куче

Нет, значимые типы (value types) в C# по умолчанию хранятся в стеке, но есть исключения:

  1. Когда значимый тип является полем ссылочного типа (класса) - тогда он хранится в куче вместе с объектом
  2. При упаковке (boxing) - когда значимый тип приводится к object или интерфейсу
  3. В случае с захваченными переменными в лямбда-выражениях/анонимных методах (closure)

Пример:

csharp
class MyClass {
    public int Value; // хранится в куче
}

void Method() {
    int x = 5; // в стеке
    object boxed = x; // упаковка - теперь в куче
    
    Action lambda = () => {
        int y = x; // x захвачен - может оказаться в куче
    };
}

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

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

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