繁体   English   中英

C#继承和静态类

[英]C# inheritence and static classes

为什么不能将静态类继承为普通类?

如果B继承自A(是A的子类),则意味着B的实例可以存储在A类型的变量中,并且它的虚拟方法将调用B类的那些方法。

对于静态类,您没有类实例的概念,因此无法继承。 使用静态(单例)对常规类的引用可能会更好。

来自静态类和静态类成员(C#编程指南)

因此,创建静态类与创建仅包含静态成员和私有构造函数的类基本相同。 私有构造函数可防止实例化该类。 使用静态类的优点是编译器可以检查以确保没有意外添加任何实例成员。 编译器将保证不能创建此类的实例。

静态类是密封的,因此无法继承。 它们不能从Object以外的任何类继承。 静态类不能包含实例构造函数; 但是,它们可以包含静态构造函数。

作为从静态类继承的替代方法,可以将扩展方法分配给接口。

您不能继承静态类-原因很简单。 静态类被标记为抽象,并密封在无法实例化或继承的已编译IL中

这实际上是设计使然。 似乎没有充分的理由继承静态类。 它具有公共静态成员,您始终可以通过类名称本身访问它。 我看到的继承静态内容的唯一原因是不好的原因,例如保存了几个打字字符。

也许有理由考虑将静态成员直接带入范围的机制(实际上,我们将在Orcas产品周期之后考虑这一点),但是静态类继承并不是要走的路:这是使用错误的机制,并且有效仅针对碰巧驻留在静态类中的静态成员。

(Mads Torgersen,C#语言PM)

资料来源: 为什么我不能继承静态类?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM