为什么要“不要访问派生类在基类中定义的静态成员”。

丰富

Microsoft在C#编码约定(C#编程指南)上的文章明确指出:

“请勿访问派生类在基类中定义的静态成员。”

为什么不访问静态成员?

似乎在某些情况下应该发生这种情况,例如所有const成员都是静态的。派生类应该永远无法读取基类中定义的const成员吗?

usr

让我们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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么`this`在调用派生类对象时无法从基类方法访问派生类成员

来自分类Dev

从派生类访问基类中的受保护成员

来自分类Dev

从派生类访问基类中的受保护成员

来自分类Dev

为什么派生类指针指向基类可以调用派生类成员函数?

来自分类Dev

派生类不能访问私有成员(尽管构造函数是在基类中定义的)

来自分类Dev

重新定义派生类中的静态成员。爪哇

来自分类Dev

从基类的指针访问派生类的成员

来自分类Dev

从基类指针访问派生类成员

来自分类Dev

从基类指针访问派生类成员

来自分类Dev

C ++-在派生类中静态初始化基类保护的成员变量

来自分类Dev

通过运行时索引访问派生类中基类的成员

来自分类Dev

如何在kotlin中定义类,成员可以在java派生类中访问

来自分类Dev

基类和派生类中的数据成员相同

来自分类Dev

Python:在派生类中隐藏基类的成员

来自分类Dev

静态实例基类/派生类

来自分类Dev

静态实例基类/派生类

来自分类Dev

为什么派生类不能访问非虚拟基类函数?

来自分类Dev

在派生类中绑定非静态模板成员函数

来自分类Dev

为什么初始化派生类变量并分配给其基类类型不允许访问其成员?

来自分类Dev

为什么初始化派生类变量并分配给其基类类型不允许访问其成员?

来自分类Dev

如何从C ++中的基类访问派生类的属性?

来自分类Dev

从派生类访问基类中的类型别名

来自分类Dev

如何通过类型为base的指针访问派生类中的成员,但指向派生类

来自分类Dev

从基类的派生类访问属性

来自分类Dev

从派生类访问基类对象

来自分类Dev

从基类指针访问派生类

来自分类Dev

我如何从另一个类的基类访问派生类中的受保护成员

来自分类Dev

在抽象基类中声明静态,常量成员,将其分配给派生类中的值?

来自分类Dev

无法访问派生类中的受保护成员

Related 相关文章

  1. 1

    为什么`this`在调用派生类对象时无法从基类方法访问派生类成员

  2. 2

    从派生类访问基类中的受保护成员

  3. 3

    从派生类访问基类中的受保护成员

  4. 4

    为什么派生类指针指向基类可以调用派生类成员函数?

  5. 5

    派生类不能访问私有成员(尽管构造函数是在基类中定义的)

  6. 6

    重新定义派生类中的静态成员。爪哇

  7. 7

    从基类的指针访问派生类的成员

  8. 8

    从基类指针访问派生类成员

  9. 9

    从基类指针访问派生类成员

  10. 10

    C ++-在派生类中静态初始化基类保护的成员变量

  11. 11

    通过运行时索引访问派生类中基类的成员

  12. 12

    如何在kotlin中定义类,成员可以在java派生类中访问

  13. 13

    基类和派生类中的数据成员相同

  14. 14

    Python:在派生类中隐藏基类的成员

  15. 15

    静态实例基类/派生类

  16. 16

    静态实例基类/派生类

  17. 17

    为什么派生类不能访问非虚拟基类函数?

  18. 18

    在派生类中绑定非静态模板成员函数

  19. 19

    为什么初始化派生类变量并分配给其基类类型不允许访问其成员?

  20. 20

    为什么初始化派生类变量并分配给其基类类型不允许访问其成员?

  21. 21

    如何从C ++中的基类访问派生类的属性?

  22. 22

    从派生类访问基类中的类型别名

  23. 23

    如何通过类型为base的指针访问派生类中的成员,但指向派生类

  24. 24

    从基类的派生类访问属性

  25. 25

    从派生类访问基类对象

  26. 26

    从基类指针访问派生类

  27. 27

    我如何从另一个类的基类访问派生类中的受保护成员

  28. 28

    在抽象基类中声明静态,常量成员,将其分配给派生类中的值?

  29. 29

    无法访问派生类中的受保护成员

热门标签

归档