Вы даже не можете объявить частные виртуальные методы. Единственный раз, когда это вообще имело бы смысл, было бы:
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 ()': виртуальный или абстрактный
участники не могут
быть личным