1

我有一个抽象类,它应该成为一个巨大的类层次结构的基础。除其他外,它具有一定的抽象方法。在执行期间,它会被一个只知道这个抽象类而不知道它的子类的系统不断地调用这个类的所有对象:

    foreach( AbstractClass object in allTheObjects )
        object.DoStuff();

然而,实际上它的很多孩子并没有重写这个方法(在基类中它是空的);使用它的和不在类层次结构中分布的。C# 会处理这个空方法,还是我必须以某种方式对其进行优化?

PS:我知道过早的优化是邪恶的,但这让我很好奇。

4

2 回答 2

3

我不会担心的。在 C# 中,方法调用非常便宜。即使您对此进行优化,我也怀疑您会看到任何不同。请参阅帖子以供参考。

我会更担心您是否可以避免遍历所有内容,或者数据结构allTheObjects是什么。我想说那里有更多的优化潜力。

此外,您可能会考虑是否真的需要一个大的继承结构,或者您是否可以通过组合或接口来实现您的目标。

您还将在此处找到更多信息(接口方法与委托与普通方法调用)

于 2012-10-22T17:38:35.237 回答
2

但是,实际上它的很多孩子都会有这个方法为空

也许您需要将此方法声明为虚拟而不是抽象?因此,您可以提供默认的空实现。

于 2012-10-22T17:39:39.067 回答