c# - 什么时候在实例类中使用私有(private)静态方法有意义

标签 c# private static-methods

<分区>

我继承了一些代码,这些代码是一个常规类,其中包含一些私有(private)静态方法。代码(伪代码)是这样的

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 家伙所利用的。此外,由于关键字的含义,将方法设为静态可以略微提高可读性。

我对此的看法通常是可读性。在这种情况下,有两个区别:实例与静态、公共(public)与私有(private)。两者在本质上都不比另一种更有益,益处仅根据预期用途出现。在您的情况下,它作为公共(public)方法没有任何值(value),并且不是该类型的公共(public) API 的一部分,因此您将其设为私有(private),并且不想改变实例状态,因此将其设为静态。

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

关于c# - 什么时候在实例类中使用私有(private)静态方法有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33214314/

相关文章:

C#.NET : Scraping dynamic (JS) websites

c++ - 为什么子类设法访问 C++ 私有(private)继承成员?

java - 通过实例调用静态函数时是否会忽略运行时实例?

c++ - 使用静态方法初始化 const 类字段是好事还是坏事?

c++11 - 使用 GCC 在继承的模板静态成员函数上使用 decltype

C# System.InvalidOperationException : The current TransactionScope is already complete

c# - 如何进行字典反向查找

c++ - 我真的需要为 friend operator<< 为命名空间中的类竭尽全力吗?

c# - MSMQ - 无法从多播队列接收

asp.net-mvc - Asp.Net MVC 中私有(private)方法和用 NonAction 修饰的 Action 的区别