如果方法有参数,同意或不同意,CodeRush建议将方法设为静态?

Nea*_*eal 2 .net clr optimization devexpress coderush

我使用Developer Express的CodeRush产品,该产品具有一个名为Code Issues的功能,可以提供优化代码的建议.我注意到如果你有一个具有参数的方法,它总是建议使这个方法静态.本着试图编写最佳代码和优化的精神,我假设是DevExpress试图帮助我们做的事情,我听到了关于是否使该方法静态实际上是明智的混合意见.

您对何时方法应该是静态的有什么看法?这样做有什么好处吗?影响?我没有看到它有任何问题,因为它需要参数来运行该方法,因此它不会成为跨多个用户/使用的问题.

是好是坏?

谢谢.

Cha*_*ana 6

方法是否具有参数与其无关.唯一的考虑因素是该方法是否尝试访问该类的任何非静态(即基于实例的)成员,或者该类中的某个其他静态成员是否调用它....

例如

 private static int Add(int a, int b) 
 { return a + b; }
Run Code Online (Sandbox Code Playgroud)

可以是静态的 - 即使它有参数,它也不会访问其容器类的任何实例成员

但是在下面的类中,PrintHello()由于它访问基于实例的字段,因此无法声明为静态useCount,即使它没有参数.

public class myClass
{
    private int useCount = 0;

    private void PrintHello()
    { 
        useCount = useCount + 1;
        Console.Write("Hello");
    }
}
Run Code Online (Sandbox Code Playgroud)