是否可以在不使用New关键字的情况下执行方法隐藏?

pri*_*kar 2 c# oop

今天我接受了一次采访,我被问到了

是否可以在不使用New关键字的情况下执行方法隐藏?

据我所知,这是不可能的.所以我说了.

是否有任何(严重的)棘手/替代方法来执行方法隐藏?我想过一次密封 ......

也像显式接口,有什么类似的......(不确定)

编辑

作为关于这个主题的最后一个问题,就像我们可以为显式接口做的那样

 Interfacename.Method name
Run Code Online (Sandbox Code Playgroud)

我们可以为派生类做类似的事情.

Class Derived:Base
{ 
  public void Base.SomeMethod(){}
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

绝对 - 如果你没有指定任何东西,你仍然可以获得与new修饰符相同的效果,但你也会收到警告.

当然,还有明确的接口实现.

在这两种情况下,只需将目标转换为其他类型"取消隐藏"该方法:

((BaseClass) x).SomeMethod();
((IFoo) x).SomeMethod();
Run Code Online (Sandbox Code Playgroud)

密封类有无关方法隐藏虽然-或者更确切地说,它可以防止任何派生类从隐藏的方法,通过确保有没有派生类.