当一个方法被声明为Virtual时,它是一个虚拟方法,直到你使用ClassName variable = new ClassName();声明一个类的实例之前,它都不存在于真实的内存空间中。这个关键字在类的继承中非常常用,用来提供类方法的多态性支持。
virtual修饰的方法为虚方法,暗示其子类最好有自己的实现(如果自己觉得这个方法通用性比较弱就用virtual去声明这个方法,然后用户可以根据不同的情况首先继承它然后对它进行重载) override修饰的方法为重写方法,表示覆盖了基类原有方法的实现
在C#中,如果声明一个方法的时候用了virtual这个关键字,那么,在派生类中,就可以使用override或者new关键字来重写(弃用)它或是隐藏(忽略)它.如果你在父类中用了virtual这个关键字,而在其派生类中又没有用override或new关键字,而直接引用一个同名方法的话,编译器将会报警告错误,并将以new方式,即忽略派生类中的方法的方式来运行。