我在继承类中有一个被重写多次的“修改”方法,该方法采用一个int并可以决定如何处理它。

如果方法不知道int,则将其传递给继承的类的版本。

现在,在某些情况下,对于同一int而言,不同的替代可能具有不同的情况(请参阅情况10)。

public abstract class A
{
  public virtual void Modify(int i)
  {
    switch(i)
    {
      //switch cases
    }
  }
}

public abstract class B : A
{
  public override void Modify(int i)
  {
    switch (i)
    {
      //switch cases
      case 10:
        //Under certain circumstances, this case should be used
        break;
      default:
        base.Modify(i);
        break;
    }
  }
}

public class C : B
{
  public override void Modify(int i)
  {
    switch (i)
    {
      //switch cases
      case 10:
        //By default, this case should be used
        break;
      default:
        base.Modify(i);
        break;
    }
  }


我的问题:给定类C的实例,如何在不通过'base'引用的情况下访问被C覆盖的特定方法?

最佳答案

如果您的对象是C类的实例,则无论您将其保留在A还是C中,它都将调用C类的Modify函数:

C objectC1 = new C();
A objectC2 = new C();


objectC1与objectC2相同。他们都称C.Modify(int)

关于c# - 如何在C#中调用特定的重写方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32180294/

10-16 12:38