【发布时间】:2017-10-29 13:28:36
【问题描述】:
我有以下情况。我继承了子类,想知道子类消失后超类会发生什么
以下是我的实现:
class Program
{
static void Main(string[] args)
{
using (var a = new SuperHuman())
{
}
Console.ReadLine();
}
}
class Human : IDisposable
{
public string LoType = "Normal";
public Human()
{
Console.WriteLine("Human Created");
}
public string GetHumanType()
{
return LoType;
}
public void Dispose()
{
Console.WriteLine("{0} Human Class gONE", LoType);
}
}
class SuperHuman : Human
{
public SuperHuman()
{
LoType = "Super";
Console.WriteLine("{0} Human Created",LoType);
}
}
给我以下输出:
Human Created
SuperHuman Created
SuperHuman Class Gone
我想知道的是 Parent 类是否也消失了 如果不是,我如何将它与子类一起处理?
【问题讨论】:
-
你不会处理一个 class,你会处理一个 object - 当你创建一个
SuperHuman的实例时,你'实际上并没有创建两个对象……您只是在创建一个。所以是的,您的对象已被处置。 -
附带说明:可以说,这个测试输出实际上并不是显示创建和处理,而是调用了哪些方法。 Superhuman 构造函数隐式调用 Human 构造函数(不显示
LoType)。如果基类实现了一个以 LoType 作为参数(或抽象属性)的构造函数,并且输出将显示该类型,那么您也只会看到超人类的“创建”。 Dispose 仅显示包含 lotype 的输出,并且不会在继承类中被覆盖
标签: c# garbage-collection dispose