Встречается на собеседованиях • сегодня

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

Нет, значимые типы (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 захвачен - может оказаться в куче
    };
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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