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
}
它不会给您一个编译错误,但它会给您一个警告,并表现得好像您使用了new关键字。