Давайте разберем один из довольно популярных вопросов на собеседовании на позицию C# Software Engineer: "Что такое Boxing и Unboxing" ? Boxing Boxing или упаковка представляет собой неявный процесс преобразования Value type или типа значения, т.е. значения хранящегося на стеке в тип object. Когда Value type упаковывается средой CLR, она создает обёртку значения внутри System.Object и сохраняет ее в управляемой куче. Unboxing Обратная операция распаковки, Unboxing, осуществляется явным преобразованием System.Object в Value type. Если упакованный объект не соответствует требуемому типу, то выбрасывается исключение InvalidCastException. Пример // boxing (value type, stack -> object, heap)
int i = 123;
object o = i;
// unboxing (object, heap -> value type, stack)
object o = 123;
var i = (int)o; Вместо заключения Упаковка и распаковка снижают производительность приложения как в плане замедления, так и в плане расходе дополнительной памяти, поэтому нужно стараться минимизировать создани