例如这样一个子类
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修饰符究竟是作什么的
相同的方法名,不同的参数类型或数量,这就是重载
并非不能调用,VS在自动提示的时候也会给出该方法所有可能的签名。
在调用的时候,给定指定类型的参数,就可以了。
例如直接调用
new SettingMTW2BC(r).initSetting(s)
如果遇到其他什么情况下的问题,可以将具体的报错信息附带上。