什么时候,如果有的话,将参数作为参数传递给静态方法比让方法是非静态的并通过实例成员访问相同的值更快。假设该方法以只读方式访问这些成员。
在所有其他条件相同的情况下,调用静态方法是 slightly faster而不是调用实例方法。
在所有其他条件相同的情况下,调用不带参数的方法比调用带参数的方法稍微快一些。
考虑:
private Thing _thing;
void DoTheThing()
{
_thing.DoIt();
}
与这个等效代码相比:
private Thing _thing;
// caller's responsibility to pass "_thing"
static void DoTheThing(Thing thing)
{
thing.DoIt();
}
我想不出这种优化会真正增加任何值(value)的现实情况,但作为一个思想实验(对于那些喜欢讨论这种事情的人),是否真的有好处,并且如果是这样,那么有多少论点(什么类型等)使天平向相反方向倾斜?
是否还有其他因素会考虑这一点?例如,静态方法将 _thing
作为局部变量而不是字段进行访问。
最佳答案
我可以想到一个可能的性能优势(对于非虚拟方法):静态方法不需要先测试引用是否为空(抛出 NullReferenceException
在适当的地方)。
我认为目前这不会带来任何优势,但这是可能的。不过,我不确定它是否适用于您的特定示例 - 并且很难看出它如何适用于您实际想要使用该值的任何情况。
关于c# - 使方法静态可以提高性能,在什么情况下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1573589/