小编Sur*_*Dev的帖子

函数覆盖不调用

我正在编写一个正在编写的程序的问题,我的虚函数似乎没有按照应有的方式运行.

我有一个带有虚函数的类,以及一个覆盖它的派生类.当我调用该函数时,不会调用覆盖,但是底部是.这是我之前已经完成了一百万次的事情,我不知道这种行为如何在简单的案例中突破.

举个例子:

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)

这个例子只是为了效果(我没有编译它来检查它,我只是在演示).我只是想知道什么可以破坏,所以不会调用覆盖.我无法粘贴我的特定代码,但理论上它就像那样简单.

  • 继承层次结构只是两个类
  • 没有密封修饰符
  • 该类是通过对继承类的new调用创建的
  • 虚函数受保护,并从基类中的公共函数调用

怎么可能破坏或可能干扰这种行为?该项目非常复杂,但这并不是我正在实施的新内容.在我的特定代码中,甚至还有另一个虚函数以完全相同的方式编写并以相同的方式继承,工作正常.我甚至通过复制/粘贴那个并重命名来创建新函数,所以语法应该是相同的(我确实在他们不工作时从头开始重建它们,但它们的行为没有区别).

无论如何,我在我的智慧结束,我不能花几天时间寻找一个不起眼的理由,所以任何关于从哪里开始寻找的想法将非常感激.

c# virtual

0
推荐指数
1
解决办法
9439
查看次数

标签 统计

c# ×1

virtual ×1