对于引用类型,对象的内存布局是
| Type Object pointer|
| Sync Block |
| Instance fields...|
Run Code Online (Sandbox Code Playgroud)
对于值类型,对象布局似乎是
| Instance fields...|
Run Code Online (Sandbox Code Playgroud)
对于引用类型,GetType表示从"类型对象指针"中查找对象.给定引用类型对象的所有对象都指向同一类型对象(也有方法表)
对于值类型,此指针不可用.那么GetType()如何工作?
我查了一下谷歌,我发现了这个片段..这有点模糊.有人可以详细说明吗?
解决方案是存储值的位置可以仅存储特定类型的值.这由验证者保证. 资源
在讨论密封类时,经常提到术语"虚函数表".究竟是什么?我刚才读到一个方法表(我不记得这个目的的目的)和谷歌/搜索这里带来了C++相关的结果.
谢谢
我确定标题是否具有解释性,但我需要一些帮助来理解这个概念。
我们有类(引用类型),它具有与 Type 对象关联的方法表。除了方法表之外,类型对象还包含所有静态字段、类型 obj 指针和同步块索引。
在引用类型的实例上调用方法时,CLR 会引用此方法表。
方法表包含用于更改实例字段状态的特定方法的 IL。
类似地,我们可以为结构(值类型)定义方法。
在运行时,当在值类型上调用方法时,CLR 从何处引用在值类型的实例上调用的方法的 IL。
struct A
{
// for Immutability of value type
public readonly int a;
public void MethodOnValueType()
{
// Some code here
}
}
Run Code Online (Sandbox Code Playgroud)
CLR 在哪里引用查找名为“MethodOnValueType”的方法的 IL?
托管堆中的值类型是否有任何类型对象?
我确定引用类型的情况,但对值类型感到困惑。
谢谢。