Карточка Junior Типы значений и ссылочные спрашивают часто обновлено

Что такое boxing и unboxing

Вопрос

Что такое упаковка и распаковка, и чем они плохи?

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

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

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

Коротко

Boxing: значение копируется в новый объект в куче при приведении к object, ValueType или интерфейсу. Unboxing: явное приведение обратно, с проверкой точного типа ((long)(object)1 упадёт с InvalidCastException).

Ответ

Boxing: значение копируется в новый объект в куче при приведении к object, ValueType или интерфейсу. Unboxing: явное приведение обратно, с проверкой точного типа ((long)(object)1 упадёт с InvalidCastException). Минусы: аллокация, нагрузка на GC, копирование. Изменения упакованной копии не видны в исходной переменной.

Разбор

Источники скрытой упаковки: ArrayList, string.Format с числами в старых версиях, вызов интерфейсного метода у структуры через интерфейс, Enum.HasFlag до .NET Core 2.1.

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

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

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