Для того, щоб величини посилального і значущого типів могли використовуватися спільно, необхідно мати можливість перетворення з одного типу в інший. Мова С# забезпечує таку можливість. Перетворення з типу-значення в посилальний тип називається упаковкою (boxing), зворотне перетворення - розпаковуванням (unboxing).
Якщо величина значущого типу використовується в тому місці, де потрібний посилальний тип, автоматично виконується створення проміжної величини посилального типу: створюється посилання, в хіпові виділяється відповідний об'єм пам'яті і туди копіюється значення величини, тобто значення ніби упаковується в об'єкт. При необхідності зворотного перетворення з величини посилального типу «знімається упаковка», і в подальших діях бере участь тільки її значення.