C# 修饰符new

class BaseClass
{

    public void Method1()
    {
        Console.WriteLine("Base - Method1");
        Method2();
    }    public virtual void Method2()
    {
        Console.WriteLine("Base - Method2");
    }
}

class DerivedClass : BaseClass
{

    public new void Method2()
    {
        Console.WriteLine("Derived - Method2");
    }
}

DerivedClass dc = new DerivedClass();
dc.Method1();
结果为Base - Method1 Base - Method2
请问为什么得到的结果不是Base - Method1 Derived - Method2?new不是会隐藏基类的成员吗?


千万里不及你
浏览 634回答 1
1回答

蛊毒传说

只是隐藏,还是会调用的啦,又没消失,你要想用子类的方法实现就去掉new,通过override关键字进行重写即可。
打开App,查看更多内容
随时随地看视频慕课网APP