对同一方法使用虚拟和覆盖
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.
中被覆盖
我想在 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.