【发布时间】: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