Выбор ответа Middle Типы значений и ссылочные спрашивают часто обновлено
Где хранится поле-структура внутри класса
Вопрос
Класс Order содержит поле типа struct Money. Где физически лежат данные этого поля для объекта new Order()?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В куче, внутри самого объекта Order. Утверждение «структуры живут на стеке» неверно в общем виде.
Варианты ответа
- Всегда на стеке, потому что структуры хранятся на стеке
- В куче, внутри самого объекта
Orderправильный ответ - В отдельном объекте в куче, а в
Orderлежит ссылка на него - В регистрах процессора до первого обращения
Разбор
Утверждение «структуры живут на стеке» неверно в общем виде. Тип значения хранится там, где лежит содержащая его переменная: локальная переменная обычно на стеке, а поле класса встроено прямо в объект в куче. Отдельный объект с ссылкой появляется только при упаковке (boxing). Регистры могут использоваться JIT для локальных переменных, но к полю объекта это не относится.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Типы значений и ссылочные»
- Что такое boxing и unboxing
- Сравнение двух упакованных чисел через ==
- Когда происходит упаковка
- Переприсваивание параметра-класса
- default и конструктор структуры без параметров
- Число различных точек
- Сумма int с переполнением, как в unchecked
- Среднее с пропусками (int?)