C#子类函数无法调用?

例如这样一个子类

class SettingMTW2BC : SettingMTW2
{
    public SettingMTW2BC(ReadXMLConfig r) : base(r)
    {
        initSetting(r);
    }


    public new void initSetting(ReadXMLConfig r)
    {
           ......
    }

    public new void initSetting(String s)
    {
           ......
    }
}

 class SettingMTW2 : Setting
{

    public SettingMTW2(ReadXMLConfig r) : base (r)
    {
         ......
    }

    public override void initSetting(ReadXMLConfig r)
    {
          .....
    }




    public   void initSetting(String s)
    {
          ......
    }


结果在外部只能调用 initSetting(ReadXMLConfig r) 
而不能调用initSetting(String s)
为什么?


我子类改成public override void initSetting(String s)
(父类相应的变化)就可以调用了
所以new修饰符究竟是作什么的
阅读 2.1k
1 个回答

相同的方法名,不同的参数类型或数量,这就是重载

并非不能调用,VS在自动提示的时候也会给出该方法所有可能的签名。
在调用的时候,给定指定类型的参数,就可以了。

例如直接调用new SettingMTW2BC(r).initSetting(s)

如果遇到其他什么情况下的问题,可以将具体的报错信息附带上。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进