在C#中继承并使用覆盖函数Y()调用base.X()

Ahm*_*kin 4 c# inheritance

我需要了解C#中的继承性.我有一个如下所示的课程:

Class BaseClass
{
    public void X()
    {
        //Some code here
        Y();
    }

    public void Y()
    {
        //Some code here
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想创建另一个派生自BaseClass的类(ChildClass).问题是我想以某种方式覆盖ChildClass中的Y()函数,并且当调用base.X()函数时,我希望X()函数在ChildClass中使用重写的Y()函数.

有人建议我在覆盖时使用'delegate'关键字作为Y函数.但是,我不太确定这会起作用.

这可能吗?有什么建议?

Gar*_*ler 19

class BaseClass
{
    public void X()
    {
        // Some code here
        Y();
    }

    public virtual void Y()
    {
        // Some code here
    }
}

class ChildClass : BaseClass
{
    public override void Y()
    {
        // Some code here
    }
}
Run Code Online (Sandbox Code Playgroud)

如果在某些时候你要调用BaseClass的执行Y()ChildClass,你可以这样做:

class ChildClass : BaseClass
{
    public override void Y()
    {
        // Some code here
        base.Y();
    }
}
Run Code Online (Sandbox Code Playgroud)