Упаковка и распаковка value типа

Что именно происходит в памяти во время упаковки и распаковки значимого типа?

Такой процесс:

  • Вначале выделяется память. Объём памяти, которая выделится, будет зависеть от длины значимого типа, и некоторыми расходами памяти благодаря которым он становится настоящим объектом, а именно: указатель на таблице с методами и индекс SyncBlockIndex.
  • Затем, поля value типа копируются в память, которая выделяется в куче.
  • И наконец возвращается адрес самого созданного объекта. Данный адрес по сути является ссылкой на объект, и размерный объект становится обыкновенным ссылочным.

Это всё шаги упаковки. Распаковка вопреки ожиданием не является "обратной" упаковке. Впринципе весь процесс распаковки сводится к простому получению указателя на исходный значимый тип, который содержится в объекте.