Это описание бокса неточно.Созданный объект не просто экземпляр голого System.Object
;каждый тип значения фактически имеет свой собственный «скрытый» соответствующий ссылочный тип, который является просто классом, производным от ValueType
, реализующим те же интерфейсы, что и тип значения, и с полем типа типа значения.Это, конечно, то, что я думаю об этом, по крайней мере, и это примерно так, как описывает спецификация CLI.System.Object
само по себе не не имеет никакого хранилища для этого.
Я также хотел бы исправить часть "хранение переменной" - бокс хранит значение в объекте.Это значение может быть значением переменной, или результатом вызова метода, или чего-то еще.
Конечно, для ссылочных типов бокс вообще не требуется.Вам действительно нужно различать ссылку и объект , хотя - как только вы поймете эти два в уме, большинство других вещей будут следовать довольно легко.Затем помните, что значение переменной никогда не является объектом - это только значение типа значения или ссылка (или указатель:)
(О, и это покрыто несколько вC # в глубине, но не в мельчайших подробностях. Возможно, вас заинтересует пост Эрика Липперта «Правда о типах значений» , хотя.)