在C#中优化空方法调用

时间:2012-10-22 17:32:49

标签: c# optimization abstract method-call

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

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

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

P.S。:我知道过早的优化是邪恶的,但它让我非常好奇。

2 个答案:

答案 0 :(得分:3)

我不担心。在C#中,方法调用非常便宜。即使你愿意这样做,我也怀疑你会看到任何不同之处。请参阅this帖子以供参考。

如果你能避免循环遍历所有内容,或者结构allTheObjects是什么,我会更加担心。我想说那里有更多的优化潜力。

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

您还可以找到更多信息here(接口方法与委托与普通方法调用)

答案 1 :(得分:2)

  

但是,其中很多孩子实际上都会将此方法清空

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