你可以覆盖私有虚拟方法吗?

我想你可以和我的同事认为你做不到!

您甚至无法声明私有虚拟方法。 唯一有意义的是,如果你有:

public class Outer { private virtual void Foo() {} public class Nested : Outer { private override void Foo() {} } } 

…这是类型可以访问其父级私有成员的唯一方案。 但是,这仍然是禁止的:

Test.cs(7,31):错误CS0621:’Outer.Nested.Foo()’:虚拟或抽象成员不能是私有的
Test.cs(3,26):错误CS0621:’Outer.Foo()’:虚拟或抽象成员不能是私有的

你的同事是对的。 你不能声明私有虚方法因为没有意义(因为没有办法覆盖它们)……

但您可以覆盖受保护的虚拟方法。

您不会在衍生课程中为私人方法提供资金。 因此,虚拟关键字在这种情况下没有敏感性。