我一直在阅读 c# 规范,遇到了一个我没有预料到的场景,希望有人能分享一些线索。
我偶然发现了用于在派生类中隐藏基类成员的 new
关键字,随后就何时使用 new
而不是 override
virtual
成员。
我将一些代码示例放入我的 IDE 中,希望看到编译错误
public class BaseType
{
public void method()
{
// do nothing
}
}
public class DerivedType : BaseType
{
public new void method()
{
base.method();
}
}
而是发现这是合法的 c#。既然派生类隐藏了method()
的存在,为什么我还可以调用它?
干杯
最佳答案
DerivedType
隐藏了将要继承 DerivedType
的类的方法,而不是它本身。
请注意,要隐藏该方法,该类必须知道在其父类中存在一个具有相同名称和相同参数的方法。因此,一个类将方法隐藏在它自己的范围之外是不合逻辑的。
关于c# - 为什么标记为在基类中隐藏实现的方法可以调用隐藏方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25362663/