base class 是否为每个新实例实例化?

Does base class gets instantiated for every new instance?

我一直在思考CLR是如何创建新实例的。考虑这段代码:

public class Base
{
    public Base()
    { }
}

public class Derived : Base
{
    public Derived()
        : base()
    { }
}

这些是我的问题:

  1. var baseObj = new Base();这行代码每次都会创建一个System.Object实例吗?内存中有多少实例?是 2 还是 1?

  2. 对于这行代码:var derObj = new Derived();。将创建多少个实例?是3还是2?

在两个样本中,只有一个对象。只分配了一块内存,基础 class 'merges' 及其父项。只有一个 class 包含从基础 classes 派生的所有方法、字段和属性,包括 base-class-of-all。 object.

如果 var derivedObj = new Derived(); 创建两个实例,您认为会发生什么情况?没有赋值给baseObj的怎么引用?让 classes 的两个实例保持活动状态是没有用的。一个就行了。