代码之家  ›  专栏  ›  技术社区  ›  Tad Donaghe

静态类与实例类[重复]

  •  1
  • Tad Donaghe  · 技术社区  · 16 年前

    复制品

    Should C# methods that can be static be static?


    如果这个问题看起来很基本,请原谅我-我正在查看一些看起来很好的源代码,但它提出了一些问题…

    如果一个给定的类没有成员数据,即它不维护任何类型的状态,那么不使用静态方法将该类标记为静态类有什么好处吗?

    不将状态保持为静态的方法标记有什么好处吗?

    谢谢!

    编辑:自从有人提出,我看到的代码是用C写的。

    4 回复  |  直到 16 年前
        1
  •  8
  •   Mehrdad Afshari    16 年前

    对。我可以想到一些原因:

    1. 易于模拟和单元测试
    2. 易于添加状态
    3. 你可以把它传过去(作为 interface 或某物)
        2
  •  2
  •   Mike Caron    16 年前

    我会说,让它们成为类的静态方法是有好处的,而且最重要的是使类成为抽象的。这样,程序员就可以清楚地看到,这个类从未打算被实例化,而且方法仍然可用。

        3
  •  2
  •   MattK    16 年前

    如果您打算(或认为您可能打算)从类继承并用代码重写那些方法,那么保留不更改非静态状态的方法可能会有好处。 改变状态。但在这种情况下,它实际上应该是一个抽象类。

        4
  •  2
  •   Adam Jaskiewicz    16 年前

    如果一个类不维护任何状态,没有任何实例方法,并且可以完全用类方法实现,我通常会花很长时间仔细研究它的行为是否实际上在其他地方更有意义。我发现他们通常有很多方法 doSomethingWithItem(Item item) ,在中作为实例方法更有意义 Item .

    是的,我知道这并不能回答你的问题,但我认为其他人已经很好地回答了这个问题,我想从另一个角度来看待这个问题。