c# – 什么时候在实例类中使用私有静态方法

参见英文答案 > Method can be made static, but should it?                                    13个
我继承了一些常规类的代码,其中包含一些私有静态方法.代码(伪代码)看起来像这样

public class Animal
{
    private string typeOfAnimal;

    public Animal(string typeOfAnimal)
    {
        this.typeOfAnimal = typeOfAnimal;
    }

    public void MakeSound()
    {
        var sound = Animal.GetSound(typeOfAnimal);

        // Make use of sound here       
    }

    private static string GetSound(string typeOfAnimal)
    {
        if(typeOfAnimal  == "dog")
            return "bark";
        else if(typeOfAnimal == "cat")
            return "mjau";
    }
}

与使GetSound成为常规实例方法相比,这样做有什么好处?

最佳答案
在静态方法中存在一些非常小的性能差异,我认为这实际上是SO人员利用的东西.此外,由于关键字的含义,使方法静态可以使您略微提高可读性.

我对此的看法通常是可读性.在这种情况下,有两个不同之处:实例与静态,公共与私有.两者本身并不比另一种更有益,其好处仅取决于预期用途.在您的情况下,它没有值是公共方法,并且不是该类型的公共API的一部分,因此您将其设置为私有,并且不希望改变实例状态,因此您将其设置为静态.

默认情况下,ReSharper会突出显示可以变为静态的方法.

转载注明原文:c# – 什么时候在实例类中使用私有静态方法 - 代码日志