从下面的代码我想知道 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
}
答案 0 :(得分:1)
它不会给你一个编译错误,但它会给你一个警告,并表现得就像你使用了new关键字一样。