决定使C#类静态

时间:2011-10-05 10:46:30

标签: c# class static static-methods

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

e.g。

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

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

public static Utilities()
{
    ...

使类静态有任何优势吗?

4 个答案:

答案 0 :(得分:11)

是的,你应该。它阻止人们在不应该实例化的情况下实现它,并使类的目的更加清晰。阅读the MSDN page for more information

如果要添加Extension Methods

,还需要将该类标记为静态

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

另请参阅此question以及Jon Skeet的回答。

答案 1 :(得分:6)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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