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

**URL:** <https://forum.itvdn.com/t/upakovka-i-raspakovka-value-tipa/2007>\
**Category:** C# / .NET Developer\
**Created:** [24.07.2018 08:33:39 UTC](https://forum.itvdn.com/t/upakovka-i-raspakovka-value-tipa/2007 "2018-07-24T08:33:39Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![sergey226](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/s/f6c823/32.png) [@sergey226](https://forum.itvdn.com/u/sergey226)\
**Post date:** [24.07.2018 08:33:39 UTC](https://forum.itvdn.com/t/upakovka-i-raspakovka-value-tipa/2007/1 "2018-07-24T08:33:39Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![maxsaving](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/m/49beb7/32.png) [@maxsaving](https://forum.itvdn.com/u/maxsaving)\
**Post date:** [24.07.2018 08:39:37 UTC](https://forum.itvdn.com/t/upakovka-i-raspakovka-value-tipa/2007/2 "2018-07-24T08:39:37Z")

</div>

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

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

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