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

在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 本身的实例中还是单独存储?


慕桂英4014372
浏览 153回答 1
1回答

慕村225694

您正在创建一个对象(在堆上),所有字段都在类型层次结构中声明。我相信它们的存储顺序是特定于实现的,但是看到基类中的所有字段,然后是派生类中声明的字段等,我不会感到惊讶(这样一来无论执行时类型如何,任何给定声明类型的字段将始终相同。)所以内存布局可能类似于:对象头/同步块方法表指针场地 i场地 j但是要回答您问题中最直接的部分:构成对象状态的所有值都存储在一起,无论每个字段声明为哪种类型。
打开App,查看更多内容
随时随地看视频慕课网APP