这让我感到困惑,请将我的行为暴露给我?c#隐藏混淆
只有在新成员的范围内,新成员的声明隐藏了继承成员。 复印
**class Base
{
public static void F() {}
}
class Derived: Base
{
new private static void F() {} // Hides Base.F in Derived only
}
class MoreDerived: Derived
{
static void G() { F(); } // Invokes Base.F
}**
在上面的例子,F的Derived中的声明隐藏从基地继承在F,但是由于新的F Derived中具有私有访问,其范围不扩展到MoreDerived。因此,MoreDerived.G中的调用F()是有效的,并且将调用Base.F.
我不理解的是如何static void G() { F(); }
可以访问基类的方法F时,它可以访问所有的方法是直接超类和超类隐藏基类的方法F
它不能调用'Derived :: F()',因为该方法是私有的。在Derived之外,Derived :: F()可能完全不存在。您可能需要稍微改变您的示例,除非这样做能够使所有工作都成功 - 在这种情况下,您可以得到答案。 – cHao 2010-10-29 05:50:22