c# - 是否为每个新实例实例化基类?

标签 c# .net c#-4.0 clr

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

public class Base
{
    public Base()
    { }
}

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

这些是我的问题:

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

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

最佳答案

在这两个示例中,只有一个对象。仅分配了一 block 内存,并且基类与其父类“合并”。只有一个类包含从基类(包括所有基类)派生的所有方法、字段和属性。 对象

如果 var returnedObj = new Derived(); 创建两个实例,您认为会发生什么?如何引用没有赋值给baseObj的呢?保持类的两个实例处于事件状态是没有用的。只要一个就可以了。

关于c# - 是否为每个新实例实例化基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31781838/

相关文章:

visual-studio-2010 - VSTO 文档级自定义

c# - 在单元测试类中使用依赖注入(inject)

c# - 带有自定义基础集合的 Linq

c# - 使用 .Net c# 从 PDF 中提取图像

.net - 如何在 .NET 中克隆字典?

传递给具有不同签名的函数的数组

c# - ASP.NET DateTime 无法正确转换

c# - 安装项目 COM 注册

c# - Ngen 和 .net-native 一次为多少种 x86 处理器创建 native 代码?

c# - 在 C# 控制台应用程序中检查的 Delphi 应用程序中打开的互斥量