【问题标题】:What is the real significance of new modifier in C# [duplicate]C#中new修饰符的真正意义是什么[重复]
【发布时间】:2011-11-08 00:45:59
【问题描述】:

从下面的代码我想知道 MyMethod2() 和 MyMethod3() 有什么区别。 为什么 .net 提供了没有因为没有提及 new 关键字而导致编译错误,或者换句话说,如果两个实现相同,为什么 .net 提供了 new 关键字。

public class MyBase
{
    public virtual void MyMethod2()
    {
         //do something
    }
    public virtual void MyMethod3()
    {
        //do something
    }
}

public class MyDerived :MyBase
{
    public void MyMethod2()
    {
        base.MyMethod2();
    }
    public new void MyMethod3()
    {
        base.MyMethod3();
    } 
}


   static void Main(string[] args)
    {

        MyBase myClass = new MyDerived();
        myClass.MyMethod2(); //calls base class
        myClass.MyMethod3(); //calls base class
    }

【问题讨论】:

  • 尝试使用非虚拟方法——这就是棘手的开始。
  • 这里new唯一作用是抑制隐藏警告。

标签: c# oop inheritance


【解决方案1】:

它不会给你一个编译错误,但它会给你一个警告,并表现得好像你使用了新的关键字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2012-05-14
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多