c# - 装箱值只是指向存储在托管堆中的值副本的指针吗?

标签 c# boxing

在我看来,这就是装箱和拆箱。而已。有人可以确认这是正确的吗?

enter image description here

最佳答案

没有。

虽然总体思路是正确的,但并不完全正确。盒装值是符合 System.Object 内存布局的完整对象。这意味着一个 v-table 指针(它为 System.Object 虚拟方法(例如 EqualsGetHashCode 以及用作类型标签以防止拆箱为不兼容的类型)和(可选)同步监视器。

存储在装箱值句柄中的实际地址并不指向内容,而是指向附加的元数据。

关于c# - 装箱值只是指向存储在托管堆中的值副本的指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16722433/

相关文章:

.net - .NET 中的强类型装箱值

c# - 关于拳击的问题

c# - 为什么 is-operator 会导致不必要的装箱?

c# - 为什么 Int32.ToString() 发出调用指令而不是 callvirt?

C# 如何将我的 dll 添加到 .Net Framework 组件列表

c# - 访客模式可以用回调函数代替吗?

c# - Visual Studio 2015 非常慢

c# - 是否对通用原因装箱执行空检查?

c# - 带条件的 asp.net mvc 5 SelectListItem

C# - 将焦点传递给 tabcontrol/页面并且无法滚动鼠标滚轮