2
从下面的代码我想知道 MyMethod2()和MyMethod3()之间有什么区别。 为什么.net提供的不提供编译错误,因为没有提到新的关键字或换句话说,为什么.net提供了新的关键字,如果两个实现都是相同的。C#中新修饰符的真正意义是什么
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
}
尝试使用非虚拟方法 - 这就是技巧开始的地方。 – 2011-08-31 23:06:55
此处'new'的_only_效果是为了抑制隐藏警告。 –