今天我接受了一次采访,我被问到了
是否可以在不使用New关键字的情况下执行方法隐藏?
据我所知,这是不可能的。所以我说了。
是否有任何(严重的)棘手/替代方法来执行方法隐藏?我曾想过 密封 ....
还喜欢 显式界面 ,有什么类似的东西......(不确定)
被修改
关于这个主题的最后一个问题,就像我们可以为显式接口做的那样
Interfacename.Method name
我们可以为派生类做类似的事情。
Class Derived:Base
{
public void Base.SomeMethod(){}
}
答案 0 :(得分:8)
绝对 - 如果你没有指定任何,你仍然可以获得与new
修饰符相同的效果,但你也会收到警告。
当然,还有明确的界面实现。
在这两种情况下,只需将目标转换为其他类型即可取消隐藏"方法:
((BaseClass) x).SomeMethod();
((IFoo) x).SomeMethod();
密封类与方法隐藏无关 - 或者更确切地说,它通过确保 没有派生类来阻止任何派生类隐藏方法。