c# – 为什么“不要从派生类访问基类中定义的静态成员.”

前端之家收集整理的这篇文章主要介绍了c# – 为什么“不要从派生类访问基类中定义的静态成员.”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
微软在 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();.它使用继承来方便地使用一组方法.

猜你在找的C#相关文章