1

复制

可以是静态的 C# 方法应该是静态的吗?


如果这个问题看起来很简单,请原谅我 - 我正在查看一些看起来不错的源代码,但它提出了一些问题......

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

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

谢谢!

编辑:由于有人提出,我正在查看的代码是用 c# 编写的。

4

4 回答 4

8

是的。我能想到一些原因:

  1. 易于模拟和单元测试
  2. 易于添加状态
  3. 你可以传递它(作为一个interface或什么)
于 2009-05-11T19:42:33.120 回答
2

我想说使它们成为类的静态方法是有好处的,最重要的是使类抽象。这样,程序员就很清楚,这个类从来没有被实例化过,并且方法仍然可用。

于 2009-05-11T19:43:46.143 回答
2

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

于 2009-05-11T19:44:02.103 回答
2

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

是的,我知道这不能回答你的问题,但我认为其他人已经很好地涵盖了这一点,我想从另一个角度出发。

于 2009-05-11T19:50:23.573 回答