Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
父类中的c#虚方法调用另一个在子类中重写的虚方法_C# - Fatal编程技术网

父类中的c#虚方法调用另一个在子类中重写的虚方法

父类中的c#虚方法调用另一个在子类中重写的虚方法,c#,C#,假设我有一个c类a,它继承自B类,B类又继承自c类 Class A : Class B {} Class B : Class C { override OnIntialise() { do something else... } } Class C { virtual Initialise() { OnIntialise(); } virtual OnInitialise() { do s

假设我有一个c类a,它继承自B类,B类又继承自c类

Class A : Class B
{}

Class B : Class C
{
    override OnIntialise()
    {
    do something else...
    }
}

Class C
{
    virtual Initialise()
    {
        OnIntialise();
    }
    virtual OnInitialise()
    {
        do something...
    }
}

现在,当我调用a.Initialise()时,程序将调用类C中定义的方法Initialise()。在Initialise()中,方法OnInitialise()是否在类C或类B中定义?在这种情况下,将调用类B的方法初始化,因为它在子类中被重写,即类B。如果该方法在类
A
中被重写,那么类
A
中的方法将被调用。

如果在类C的Initialise()方法中是this.OnInitialise(),会是相同的。不过,您可以通过在代码中放置断点来查看流程。“是否会调用类C或类B中定义的OnInitialise()方法?”--尝试该方法时发生了什么?关于你观察到的结果,你不了解什么?为什么要让整个堆栈溢出社区参与一些您可以轻松测试自己的事情?