静态继承与实例继承一样工作。除非您不允许使静态方法变为虚拟或抽象。C#虚拟(或抽象)静态方法
class Program {
static void Main(string[] args) {
TestBase.TargetMethod();
TestChild.TargetMethod();
TestBase.Operation();
TestChild.Operation();
}
}
class TestBase {
public static void TargetMethod() {
Console.WriteLine("Base class");
}
public static void Operation() {
TargetMethod();
}
}
class TestChild : TestBase {
public static new void TargetMethod() {
Console.WriteLine("Child class");
}
}
这将输出:
Base class
Child class
Base class
Base class
但我想:
Base class
Child class
Base class
Child class
如果我能在静态方法,我会做TargetMethod虚拟,它会做的工作。但是有没有一种解决方法来获得相同的效果?
编辑:是的,我可以在子类中放置一个操作副本,但是这需要将大量代码复制并粘贴到每个孩子身上,在我的情况下,这是大约35个班级的维护噩梦。
为什么使用静态函数? – munificent 2009-04-18 12:41:23