c# - 为什么标记为在基类中隐藏实现的方法可以调用隐藏方法?

标签 c# .net inheritance method-hiding

我一直在阅读 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/

相关文章:

Java 错误 : Implicit super constructor is undefined for default constructor

c# - LINQ - 转换为字符串 LIST 并替换字符

c# - 以较小的文件大小将MP3转换为WAV

c# - 在 Windows 中获取 OneDrive 路径

.net - DataGrid 控件已禁用

c++ - 名称隐藏和脆弱的基础问题

c++ - 不同的行为取决于数据

c# - 路过 'ref' - c#

c# - 重新映射表时修改 Entity Framework 表达式

c# - 在 listView1_MouseClick 上显示特定项目