首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何调用基类方法?

如何调用基类方法?
EN

Stack Overflow用户
提问于 2018-03-14 05:57:21
回答 3查看 75关注 0票数 0

我们有以下代码:

代码语言:javascript
复制
  public class A
  {
    protected virtual void Method()
    {
      Console.Write("A");
    }
  }

  public class B : A
  {
    protected override void Method()
    {
      Console.Write("B");
    }
  }

  public class C : B
  {
    public void Some()
    {
      //How to call Method() from class A?
    }
  }

如何在C类的Method()方法中从A类调用Some()

我们假设A和B是库中的类,我们不能更改它们.

解决方案:https://stackoverflow.com/a/438952/8081796

EN

Stack Overflow用户

发布于 2018-03-14 06:12:24

如果really希望在这里调用Method of A (而不更改ABMethod的实现),则必须进行以下更改。

  1. Method of B类的访问说明符从override更改为newoverride将重写基类方法。让它成为new是做不到的。
  2. ABMethod的访问说明符改为public而不是protected protected成员的A将无法访问在您的C类。

对于这些更改,请查看下面的代码。您将看到来自类MethodA正在被调用。

代码语言:javascript
复制
static void Main()
{
    var c = new C();
    c.Some();
    Console.ReadKey();
}
public class A
{
    public virtual void Method()
    {
        Console.Write("A");
    }
}

public class B : A
{
    public new void Method()
    {
        Console.Write("B");
    }
}

public class C : B
{
    public void Some()
    {
        //How to call Method() from class A?
        ((A)this).Method();
    }
}

如果不能进行上述更改,那么恐怕不能调用A__s Method :O。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49270626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档