为了账号安全,请及时绑定邮箱和手机立即绑定

c# - 在c#中创建派生对象时基本变量的内存分配?

c# - 在c#中创建派生对象时基本变量的内存分配?

C#
慕桂英4014372 2021-08-07 16:43:04
在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

但是要回答您问题中最直接的部分:构成对象状态的所有值都存储在一起,无论每个字段声明为哪种类型。


查看完整回答
反对 回复 2021-08-07
  • 1 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信