C#heritage:从child调用的父方法调用child方法

Pad*_*rus 0 c# inheritance

我在这里面临一个问题,让我们假设我有一个父类:

class ParentClass 
{
    public void MethodA()
    {
        //Do stuff
        MethodB();
    }

    public void MethodB()
    {
        //Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

继承ParentClass并重写MethodB()的子类:

class ChildClass : ParentClass
{
    public new void MethodB()
    {
        //Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我从ChildClass对象调用MethodA()

public static void Main()
{
    ChildClass childObject = new ChildClass();
    childObject.MethodA();
}
Run Code Online (Sandbox Code Playgroud)

我怎么能确定将调用MethodB()帽子来自子类?

pok*_*oke 5

如果您修复了编译错误,通过在父类中创建虚拟方法,并通过向子类中的方法添加返回值,那么它将正常工作:

class ParentClass 
{
    …

    public virtual void MethodB()
    {
        //Do stuff
    }
}
class ChildClass : ParentClass
{
    public override void MethodB()
    {
        //Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)