加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:44:56 所属栏目:百科 来源:网络整理
导读:微软在 C# Coding Conventions (C# Programming Guide)上的文章明确指出: “Do not access a static member that is defined in a base class from a derived class.” 为什么不访问静态成员? 似乎存在这种情况应该发生的有效场景,例如所有const成员都是静
微软在 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();.它使用继承来方便地使用一组方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读