基类是否为每个新实例实例化

本文关键字:实例 实例化 新实例 是否 基类 | 更新日期: 2023-09-27 18:06:06

我一直在思考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?

基类是否为每个新实例实例化

在两个示例中,只有一个对象。只分配了一块内存,基类与其父类"合并"。只有一个类包含从基类派生的所有方法、字段和属性,包括所有的基类。object .

如果var derivedObj = new Derived();创建了两个实例,你认为会发生什么?如何参考一个没有分配给baseObj ?保持类的两个实例处于活动状态是没有用的。一个就够了