c#中新修饰符的真正意义是什么?

本文关键字:是什么 新修饰 | 更新日期: 2023-09-27 18:07:07

从下面的代码我想知道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
    }

c#中新修饰符的真正意义是什么?

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