基类是否为每个新实例实例化
本文关键字:实例 实例化 新实例 是否 基类 | 更新日期: 2023-09-27 18:06:06
我一直在思考CLR如何创建新实例。考虑以下代码:
public class Base
{
public Base()
{ }
}
public class Derived : Base
{
public Derived()
: base()
{ }
}
这些是我的问题:
每次为这行代码
var baseObj = new Base();
创建System.Object
实例吗?内存中有多少实例?是2还是1?对于这行代码:
var derObj = new Derived();
。将创建多少个实例?是3还是2?
在两个示例中,只有一个对象。只分配了一块内存,基类与其父类"合并"。只有一个类包含从基类派生的所有方法、字段和属性,包括所有的基类。object
.
如果var derivedObj = new Derived();
创建了两个实例,你认为会发生什么?如何参考一个没有分配给baseObj
?保持类的两个实例处于活动状态是没有用的。一个就够了