【发布时间】:2015-04-16 18:06:21
【问题描述】:
我不确定这是否更适合 SE 上的程序员。
我正在学习继承,特别是如何使用覆盖 - 我可以看到我可以使用覆盖来扩展功能或使用 new 来创建新功能。
EG
public override int Calls(int i)
{
//Do some things
return base.Calls(i);
}
上面做逻辑,然后调用基类。
如果我做新的
public new int Calls(int i)
然后我可以实现自己的逻辑,就好像基类从未存在过(因为它从未被调用过)。
让我感到困惑的是我可以简单地从我的覆盖方法中删除基类调用,我认为我得到的结果与新的相同。意义
public override int Calls(int i)
{
//Do some things
// return base.Calls(i); COMMENTED OUT, no base class call
}
上面的代码sn-p肯定和public new int Calls(int i)是一样的
我的问题是,我是对的吗 - 这最终是两种做同一件事的方法,因此它在开发人员的清晰度方面变得更好(通过使用覆盖或新),或者这两种方法之间是否存在任何其他差异(任何问题)。
【问题讨论】:
-
您是否尝试过通过声明为基类的变量调用
Calls方法? -
它们不是一回事。尝试谷歌搜索“覆盖与新 c#”。
标签: .net