【发布时间】:2011-01-28 05:05:40
【问题描述】:
我认为你可以,我的同事认为你不能!
【问题讨论】:
-
试试怎么样?现在每个 Windows 系统都有一个 C# 编译器...
我认为你可以,我的同事认为你不能!
【问题讨论】:
你甚至不能声明私有虚拟方法。唯一有意义的情况是,如果你有:
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()':虚拟或抽象 成员不能 保持私密
【讨论】:
你的同事是对的。您不能声明私有虚拟方法,因为没有意义(因为没有办法覆盖它们)...
但您可以覆盖受保护的虚拟方法。
【讨论】:
您不会为派生类中的私有方法提供资金。所以在这种情况下,virtual 关键字没有意义。
【讨论】: