我正在编写一个正在编写的程序的问题,我的虚函数似乎没有按照应有的方式运行.
我有一个带有虚函数的类,以及一个覆盖它的派生类.当我调用该函数时,不会调用覆盖,但是底部是.这是我之前已经完成了一百万次的事情,我不知道这种行为如何在简单的案例中突破.
举个例子:
public class ClassA
{
public DoStuff()
{
MyVirtual()
}
protected virtual MyVirtual()
{
Console.WriteLine("Base MyVirtual Called");
}
}
public class ClassB : ClassA
{
protected override MyVirtual()
{
Console.WriteLine("Overridden MyVirtual Called");
}
}
ClassA test = new ClassB;
test.DoStuff();
Run Code Online (Sandbox Code Playgroud)
这个例子只是为了效果(我没有编译它来检查它,我只是在演示).我只是想知道什么可以破坏,所以不会调用覆盖.我无法粘贴我的特定代码,但理论上它就像那样简单.
怎么可能破坏或可能干扰这种行为?该项目非常复杂,但这并不是我正在实施的新内容.在我的特定代码中,甚至还有另一个虚函数以完全相同的方式编写并以相同的方式继承,工作正常.我甚至通过复制/粘贴那个并重命名来创建新函数,所以语法应该是相同的(我确实在他们不工作时从头开始重建它们,但它们的行为没有区别).
无论如何,我在我的智慧结束,我不能花几天时间寻找一个不起眼的理由,所以任何关于从哪里开始寻找的想法将非常感激.