我认为你可以和我的同事认为你不能!
答案 0 :(得分:53)
您甚至无法声明私有虚拟方法。唯一有意义的是,如果你有:
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()':虚拟或抽象 成员不能 是私人的
答案 1 :(得分:5)
你的同事是对的。你不能声明私有虚方法因为没有意义(因为没有办法覆盖它们)......
但您可以覆盖受保护的虚拟方法。
答案 2 :(得分:0)
您在衍生课程中不会为私人方法提供资金。因此,在这种情况下,虚拟关键字没有敏感性。