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();.它使用继承来方便地使用一组方法.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...