我不清楚为什么SecondChild
类的DoSomething
在初始化Child
类时没有再次被调用。
class Parent
{
public Parent()
{
DoSomething();
}
protected virtual void DoSomething()
{
Console.WriteLine("Parent Method");
}
}
class Child : Parent
{
private string foo;
public Child()
{
foo = "HELLO";
}
protected override void DoSomething()
{
Console.WriteLine(foo.ToLower());
}
}
class SecondChild : Parent
{
public SecondChild()
{
var c = new Child();
}
protected override void DoSomething()
{
Console.WriteLine("In second Child");
}
}
class Program
{
static void Main(string[] args)
{
SecondChild c = new SecondChild();
Console.ReadLine();
}
}
我原本期望在这里调用
SecondChild
的DoSomething()
方法两次,但实际上却调用了Child
类中的DoSomething()
方法,导致出现NullException错误。
SecondChild
实例。在该构造函数中,您创建了一个Child
实例(而不是SecondChild
),那么为什么应该调用两次SecondChild.DoSomething()
? - René Vogt