【发布时间】:2022-07-06 07:03:33
【问题描述】:
如果 int 占用 4 个字节,为什么 System.Int32 在将整数装箱到对象时占用 24 个字节?
例如:
int i = 3;
object o = i;
【问题讨论】:
-
究竟如何你是怎么得到这些数字的?
-
我很好奇你是如何测量你的 24 字节的(你没有显示出来)。名称
o是一个对象变量(即对引用类型实例的引用),因此它所引用的对象(装箱的 int)被分配在托管堆上,o最终成为一个引用类型变量,持有对该对象的引用 -
“装箱”是指将值类型放入对象框中。它不仅仅是一个演员表:它有效地添加了一个指针和其他与拥有完整对象引用有关的陷阱。换句话说,盒子本身有一些开销。
-
你是用这种措辞区分
int和System.Int32吗?