对同一方法使用虚拟和覆盖

Using virtual and override for the same method

我想在 C# 程序中创建一个方法来覆盖现有的虚方法,但同时保持该方法为虚方法,以便从它继承的任何 class 可以进一步扩展该方法。

我可以在方法声明中同时使用 override 和 virtual 吗?如果是这样,我应该把它们放在哪个顺序?

例如

public override virtual void method()

public virtual override void method()

谢谢

如果方法是虚拟的,任何 child class 都可以覆盖它。您无需将其重新声明为虚拟。

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/virtual

This is a good post 来解释你的问题。基本上,如果您在基础 class virtual 中创建一个方法,任何派生的 classes 都将能够覆盖该方法(无论派生的深度如何)。没必要在你派生的classes中继续为方法指定virtual(事实上,我认为你做不到)。使用 sealed 说明符禁止方法在派生的 classes.

中被覆盖