在c#中创建派生类的对象时,基类的成员变量存储在哪里? using System; class A { public int i; } class B:A { public int j; static public void Main() { B b = new B(); } }这里当 b 对象被创建时, i 变量存储在堆中的什么地方?它是存储在 b 本身的实例中还是单独存储?
1 回答
慕村225694
TA贡献1880条经验 获得超4个赞
您正在创建一个对象(在堆上),所有字段都在类型层次结构中声明。我相信它们的存储顺序是特定于实现的,但是看到基类中的所有字段,然后是派生类中声明的字段等,我不会感到惊讶(这样一来无论执行时类型如何,任何给定声明类型的字段将始终相同。)
所以内存布局可能类似于:
对象头/同步块
方法表指针
场地
i
场地
j
但是要回答您问题中最直接的部分:构成对象状态的所有值都存储在一起,无论每个字段声明为哪种类型。
- 1 回答
- 0 关注
- 152 浏览
添加回答
举报
0/150
提交
取消