Esto me confunde, por favor expanda el comportamiento de esto?C# ocultar confusión
Una declaración de un nuevo miembro oculta un miembro heredado solo dentro del alcance del nuevo miembro. Copia
**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
}**
En el ejemplo anterior, la declaración de F en F Derivado oculta la que fue heredado de la base, pero desde la nueva F en Derivado tiene acceso privado, su ámbito de aplicación no se extiende a MoreDerived. Por lo tanto, la llamada F() en MoreDerived.G es válida e invocará Base.F.
yo no soy la comprensión de que la forma en static void G() { F(); }
puede acceder al método de la clase base de f cuando se puede tener acceso a todos los métodos de su inmediata superclase y super clase esconde el método F de la clase base
No puede invocar 'Derived :: F()', porque ese método es privado. Fuera de 'Derived',' Derived :: F() 'tampoco puede existir. Es posible que deba cambiar un poco su ejemplo, a menos que eso haga que todo funcione, en cuyo caso, usted tiene su respuesta. – cHao