我一直在思考CLR如何创建新实例。考虑这段代码:
public class Base
{
public Base()
{ }
}
public class Derived : Base
{
public Derived()
: base()
{ }
}
这些是我的问题:
每次都会为这行代码创建一个
System.Object
实例,var baseObj = new Base();
吗?内存中有多少个实例?是2还是1?对于这行代码:
var derObj = new Derived();
。将创建多少个实例?是3还是2?
最佳答案
在这两个示例中,只有一个对象。仅分配了一 block 内存,并且基类与其父类“合并”。只有一个类包含从基类(包括所有基类)派生的所有方法、字段和属性。 对象
。
如果 var returnedObj = new Derived();
创建两个实例,您认为会发生什么?如何引用没有赋值给baseObj
的呢?保持类的两个实例处于事件状态是没有用的。只要一个就可以了。
关于c# - 是否为每个新实例实例化基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31781838/