Что такое boxing и unboxing
Вопрос
Что такое упаковка и распаковка, и чем они плохи?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Ответ
Boxing: значение копируется в новый объект в куче при приведении к object, ValueType или интерфейсу.
Unboxing: явное приведение обратно, с проверкой точного типа ((long)(object)1 упадёт с InvalidCastException).
Минусы: аллокация, нагрузка на GC, копирование. Изменения упакованной копии не видны в исходной переменной.
Разбор
Источники скрытой упаковки: ArrayList, string.Format с числами в старых версиях, вызов интерфейсного метода у структуры через интерфейс, Enum.HasFlag до .NET Core 2.1.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Типы значений и ссылочные»
- Когда происходит упаковка
- Переприсваивание параметра-класса
- default и конструктор структуры без параметров
- Число различных точек
- Сумма int с переполнением, как в unchecked
- Среднее с пропусками (int?)
- Модификаторы параметров и их смысл
- Арифметика с int?