有关引用类型,该对象的内存布局
|类型对象的指针|
|同步座|
|实例字段... |
有关值类型,所述对象的布局似乎是
|实例字段... |
有关引用类型,的GetType意味着找到从类型对象的指针的对象。一个给定的参考类型的对象点的所有对象与同一类型的对象(其中也有方法表)
有关值类型,该指针将不可用。那么,如何的GetType()的工作?
我检查了谷歌,我发现这个片段..这是一个有点朦胧。有人能详细点吗?
的解决方案是,在位置 它的值存储始得店 某种类型的值。这是 由验证保证。 来源
解决方案调用的GetType()
上的值类型框,值类型。通过移动值类型到堆上你现在有现在有一个指向对象的类型引用类型。
如果你想避免拳击时,你可以叫GetType$c$c它返回一个枚举,指示值类型的类型,而拳击吧。
下面是一个例子,显示了发生在拳击:
C#:
类节目
{
静态无效的主要()
{
34.GetType();
}
}
IL为主要()
:
。方法私人hidebysig静态无效的主要()CIL管理
{
。入口点
.maxstack 8
L_0000:ldc.i4.s输入0x22
L_0002:箱INT32
L_0007:调用实例类[mscorlib程序]的System.Type [mscorlib程序] System.Object的::的GetType()
L_000c:流行
L_000d:RET
}
编辑::要显示什么编译器是干什么的,让改变文字的类型是这样的:
类节目
{
静态无效的主要()
{
34L.GetType();
}
}
添加L