这是一个C#语法的问题。子类如果要重写父类的方法的话,virtual-override一定成对的。
子类不重写,而是创建一个属于自己的同名方法,就最好加个new。如果不加new也等于new,但是编译器都会提醒你,加个标识比较好。
区别见代码:
class Program
{
static void Main(string[] args)
{
A a = new B();
a.TestFunc(); //如果B类中是override那个,输出"B" //如果B类中是new那个方法,输出"A"
Console.ReadLine();
}
}
public class A
{
public virtual void TestFunc()
{
Console.WriteLine("A");
}
}
public class B : A
{
public override void TestFunc()
{
Console.WriteLine("B");
} //当然两个方法不能并存哈
public new void TestFunc()
{
Console.WriteLine("B new");
}
}