Выбор ответа Middle Типы значений и ссылочные спрашивают часто обновлено

Где хранится поле-структура внутри класса

Вопрос

Класс Order содержит поле типа struct Money. Где физически лежат данные этого поля для объекта new Order()?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В куче, внутри самого объекта Order. Утверждение «структуры живут на стеке» неверно в общем виде.

Варианты ответа

  1. Всегда на стеке, потому что структуры хранятся на стеке
  2. В куче, внутри самого объекта Orderправильный ответ
  3. В отдельном объекте в куче, а в Order лежит ссылка на него
  4. В регистрах процессора до первого обращения

Разбор

Утверждение «структуры живут на стеке» неверно в общем виде. Тип значения хранится там, где лежит содержащая его переменная: локальная переменная обычно на стеке, а поле класса встроено прямо в объект в куче. Отдельный объект с ссылкой появляется только при упаковке (boxing). Регистры могут использоваться JIT для локальных переменных, но к полю объекта это не относится.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме