【问题标题】:Using virtual and override for the same method [duplicate]对同一方法使用虚拟和覆盖[重复]
【发布时间】:2018-03-30 04:03:12
【问题描述】:

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

我可以在方法声明中同时使用 override 和 virtual 吗?如果是这样,我应该按什么顺序排列它们?

例如

public override virtual void method()

public virtual override void method()

谢谢

【问题讨论】:

  • 我很确定如果你重写了一个方法,它已经是虚拟的了
  • 您在子类中使用了“public override void method()”,就像您在子类中覆盖方法一样。阅读article了解更多详情。

标签: c# overriding virtual


【解决方案1】:

This is a good post 解释您的要求。基本上,如果您在基类virtual 中创建一个方法,那么任何派生类都将能够覆盖该方法(无论派生有多深)。没有必要继续在你的派生类中为方法指定virtual(其实我觉得你做不到)。使用sealed 说明符禁止在派生类中重写该方法。

【讨论】:

  • 谢谢你,这更有意义。很高兴该语言为处理这些特定情况提供了如此多的功能
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-01-15
    • 2012-11-28
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2012-06-19
    • 2014-08-13
    相关资源
    最近更新 更多