我有以下两个用例:
class BaseCalculator
{
public int Sum(int x, int y)
{
return x + y;
}
}
class Calculator : BaseCalculator
{
public new int Sum ( int x , int y )
{
return x + y;
}
}
确实Sum
使用new
关键字显式隐藏了该方法。
class BaseCalculator
{
public int Sum(int x, int y)
{
return x + y;
}
}
class Calculator : BaseCalculator
{
public int Sum ( int x , int y )
{
return x + y;
}
}
我不明白两者之间的区别。第二个代码是否隐式隐藏Sum方法?
从MSDN文档:
在C#中,派生类可以包含与基类方法同名的方法。如果派生类中的方法前面带有new关键字,则该方法被定义为独立于基类中的方法。
以及为什么两个代码段相同的原因如下:
使用new关键字告诉编译器您的定义隐藏了基类中包含的定义。这是默认行为。
唯一的区别是通过使用new
关键字,可以避免编译器警告。
在MSDN上的“何时使用覆盖和新关键字”(C#编程指南)中也可以找到更多解释。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句