是否可以在不使用 New 关键字的情况下执行方法隐藏?
Is it possible to perform Method Hiding without using New keyword?
今天我去面试了
Is it possible to perform Method Hiding without using New keyword?
据我所知,这是不可能的。所以我说了。
是否有任何(严重的)棘手/替代方法来执行方法隐藏?我曾经想过Sealed....
也像 Explicit Interface,有没有那种东西...(不确定)
已编辑
关于这个主题的最后一个问题,就像我们可以为显式接口做的那样
Interfacename.Method name
我们可以为派生的 class 做类似的事情吗?
Class Derived:Base
{
public void Base.SomeMethod(){}
}
绝对 - 如果您不指定 任何东西,您仍然会获得与 new
修饰符相同的效果,但也会收到警告。
当然还有明确的接口实现。
在这两种情况下,只需将目标转换为不同的类型 "unhides" 方法:
((BaseClass) x).SomeMethod();
((IFoo) x).SomeMethod();
密封 class 与方法隐藏无关 - 或者更确切地说,它通过确保 是 来防止任何派生的 class 隐藏方法=22=] 没有导出 classes.
今天我去面试了
Is it possible to perform Method Hiding without using New keyword?
据我所知,这是不可能的。所以我说了。
是否有任何(严重的)棘手/替代方法来执行方法隐藏?我曾经想过Sealed....
也像 Explicit Interface,有没有那种东西...(不确定)
已编辑
关于这个主题的最后一个问题,就像我们可以为显式接口做的那样
Interfacename.Method name
我们可以为派生的 class 做类似的事情吗?
Class Derived:Base
{
public void Base.SomeMethod(){}
}
绝对 - 如果您不指定 任何东西,您仍然会获得与 new
修饰符相同的效果,但也会收到警告。
当然还有明确的接口实现。
在这两种情况下,只需将目标转换为不同的类型 "unhides" 方法:
((BaseClass) x).SomeMethod();
((IFoo) x).SomeMethod();
密封 class 与方法隐藏无关 - 或者更确切地说,它通过确保 是 来防止任何派生的 class 隐藏方法=22=] 没有导出 classes.