决定使C#类静态

如果我在C#中有一个Utilities.cs类,它只包含静态方法

例如

 public static string DoSomething() { return "something"; } 

我应该让这个类本身是静态的吗?

 public static Utilities() { ... 

使类静态有什么优势吗?

是的你应该。 它阻止人们在不应该实例化的情况下实现它,并使类的目的更加清晰。 阅读MSDN页面以获取更多信息 。

如果要添加扩展方法,还需要将类标记为静态

您应该仔细考虑实用程序类。 想想这些方法是否真正属于那里,或者是否有更多的OO方式。

还要看看Jon Skeet的这个问题和答案。

主要优点是它使您的设计意图更加清晰,并强制执行这些意图。 例如,你不能从静态类inheritance(即专门化它),你不能创建它的实例(它实际上是一个单例)。 这些都是您的实用程序类的设计意图。

但是,应谨慎使用静态类和方法,因为它很难改变程序的行为。 静态类和方法非常具体,不能(轻松)替换,如果您使用接口和构造函数注入的情况。 然而,静态类和成员可能很有用,但很少。 过度使用静态技术会使您的软件不够灵活,并且更难以测试。

是的,你应该让它静止。 使其静态可防止它被实例化。 它主要用于告诉使用该类的人,它只包含静态方法,这有助于提高可读性。

只有那个静态类不能包含非静态成员,因此可以防止您意外添加它们。 同样如Ray的回答中所提到的,它将使您的代码更清晰。