微软在
C# Coding Conventions (C# Programming Guide)上的文章明确指出:
“Do not access a static member that is defined in a base class from a
derived class.”
为什么不访问静态成员?
似乎存在这种情况应该发生的有效场景,例如所有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基类执行此操作.它允许你写返回View();.它使用继承来方便地使用一组方法.