Microsoft在C#编码约定(C#编程指南)上的文章明确指出:
“请勿访问派生类在基类中定义的静态成员。”
为什么不访问静态成员?
似乎在某些情况下应该发生这种情况,例如所有const
成员都是静态的。派生类应该永远无法读取基类中定义的const成员吗?
让我们object.ReferenceEquals
作为一个例子。您可以通过以下几种方法从派生类中调用此方法:
class A {
A() {
ReferenceEquals("a", "b"); //your warning is based on this style
object.ReferenceEquals("a", "b"); //recommended style
}
}
ReferenceEquals
可访问的事实A
只是一个巧合。静态方法独立于任何继承层次结构。因此,始终在任何地方都称其为完全合格。
此警告只是关于样式和清晰度。我展示的所有变体都可以编译为相同的IL。
一种不同的解释是您滥用继承来缩短用于调用方法的语法。这是对继承的滥用。ASP.NET MVC使用Controller基类进行此操作。它允许您编写return View();
。它使用继承来方便地使用一组方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句