【发布时间】:2014-07-15 03:20:09
【问题描述】:
例如在下面的程序中,我希望A 中的entrypoint() 能够在A 中调用doThis,但它在B 中调用doThis,因为那是实例类型。我怎样才能实现我想要的?
void Main()
{
A a = new B();
a.entrypoint();
}
public class A
{
public void entrypoint()
{
this.doThis(); //doesn't call A::doThis()
}
public virtual void doThis()
{
Console.WriteLine ("From A");
}
}
public class B : A
{
public override void doThis()
{
Console.WriteLine ("From B");
}
}
编辑:How can I call the 'base implementation' of an overridden virtual method? 类似,但我从基类而不是主类调用基实现。
【问题讨论】:
-
如果在派生类中重写虚方法,只会调用被重写的方法。如果不重写,会调用基类方法
-
如果要调用base中的函数,那么它不能是虚函数。
标签: c#