I think you can and my colleage thinks you cannot!
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You can't even declare private virtual methods. The only time it would make any sense at all would be if you had:
public class Outer
{
private virtual void Foo() {}
public class Nested : Outer
{
private override void Foo() {}
}
}
... that's the only scenario in which a type has access to its parent's private members. However, this is still prohibited:
Test.cs(7,31): error CS0621: 'Outer.Nested.Foo()': virtual or abstract members cannot be private
Test.cs(3,26): error CS0621: 'Outer.Foo()': virtual or abstract members cannot be private
回答2:
Your colleague is right. You can't declare private virtual methods because there's no point (since there'd be no way to override them)...
But you can override protected virtual methods.
回答3:
You won't fund your private method in your derivative class. So the virtual keyword has no sens in this case.