为什么静态类不能继承到普通类?
答案 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)