我试图通过静态类继承非静态类.
public class foo { } public static class bar : foo { }
我得到:
静态类不能从类型派生.静态类必须从对象派生.
我怎样才能从对象中派生出来?
代码在C#中.
导出静态类没有价值.使用继承的原因是:
多态性
代码重用
你不能用静态类获得的多态性,显然,因为没有实例上动态调度(换句话说,它不喜欢你可以传递一个酒吧,以期待一个Foo的功能,因为你不拥有一间酒吧) .
使用组合很容易解决代码重用:给Bar一个静态的Foo实例.
从C#3.0规范,第10.1.1.3节:
静态类可能不包含 基类规范(第10.1.4节),并且不能显式指定基类或已实现接口的列表.静态类隐式继承自类型
object
.
换句话说,你不能这样做.
错误消息是虚假的.它不是说"一个"对象.它正在讨论称为"对象"的内置类型,它是.NET中所有内容的基础.
应该说"静态类不能指定基类型".
摘自http://msdn.microsoft.com/en-us/library/79b3xss3(VS.80).aspx
静态类的主要特征是:
它们只包含静态成员.
它们无法实例化.
他们是密封的.
它们不能包含实例构造函数(C#编程指南).
因此,通过将非静态成员引入静态类,从非静态类继承违反了此列表中静态类的第一个特性.