C#继承和静态类

时间:2009-12-23 05:52:48

标签: c#

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

5 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

来自Static Classes and Static Class Members (C# Programming Guide)

  

因此,创建一个静态类   与创建类基本相同   只包含静态成员和   私人构造函数。一个私人的   构造函数阻止该类   被实例化。的优点   使用静态类是   编译器可以检查以确保   没有实例成员是偶然的   添加。编译器将保证   这个类的实例不可能   创建

     

静态类是密封的   因此不能继承。他们   不能继承任何类,除了   宾语。静态类不能包含   实例构造函数;然而,他们   可以包含静态构造函数。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:-1)

  

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

     

可能有理由考虑将静态成员直接引入范围的机制(事实上我们将在Orcas产品周期之后考虑这一点),但静态类继承不是要走的路:它是错误的使用机制,仅适用于碰巧驻留在静态类中的静态成员。

     

(Mads Torgersen,C#语言PM)

来源: Why can't I inherit static classes?