作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下两个用例:
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;
}
}
这确实使用 new
关键字显式隐藏了 Sum
方法。
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 documentation :
In C#, derived classes can contain methods with the same name as base class methods. If the method in the derived class is preceded with the new keyword, the method is defined as being independent of the method in the base class.
下面解释为什么两个代码段相同:
Using the new keyword tells the compiler that your definition hides the definition that is contained in the base class. This is the default behavior.
唯一的区别是,通过使用 new
关键字,您可以避免编译器警告。
更多解释也可以在 MSDN 中找到 Knowing When to Use Override and New Keywords (C# Programming Guide) .
关于c# - 隐式和显式方法隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19741131/
我是一名优秀的程序员,十分优秀!