【发布时间】:2013-07-31 17:16:27
【问题描述】:
我想要一些类,它们都扩展了一个基本抽象类。
然后,我想要拥有每个存储这些类的子集并调用它们实现的方法的对象。
所以我想 - 我对存储的对象什么都不做,所以让我们将这些类设为静态,我不会在存储对象上浪费内存,只是引用静态类,所以我可以调用静态函数。问题是 - 我该怎么做?
对于那些喜欢代码的人,这是我需要的:
public static abstract class A {
public static abstract void F();
}
public static class B : A {
public static override void F() {
...
}
}
// Class Storage of course does NOT work, its just here to illustrate what I need
public class Storage {
private List<A> list;
public void AddElement(A element) {
list.Add(element);
}
public void DoStuff() {
foreach(A element in list)
element::F();
}
}
有没有办法做这样的事情?或者针对此类问题的不同解决方案?
【问题讨论】:
-
静态不会浪费内存?..
-
静态类不能从其他类继承,也不能被继承。您也不能在静态函数上使用覆盖。
-
听起来你想要一个包含函数的静态类,以及保存数据以传递给这些函数的结构。例如,而不是
void DoStuff()有void DoStuff(List<A> list) -
与其考虑
static,不如考虑使用单例模式,或者查看Lazy<T>
标签: c# oop inheritance static-methods static-classes