如果我在C#中有一个Utilities.cs
类,它只包含静态方法
e.g。
public static string DoSomething()
{
return "something";
}
我应该让这个类本身是静态的吗?
public static Utilities()
{
...
使类静态有任何优势吗?
答案 0 :(得分:11)
是的,你应该。它阻止人们在不应该实例化的情况下实现它,并使类的目的更加清晰。阅读the MSDN page for more information。
如果要添加Extension Methods
,还需要将该类标记为静态您应该仔细考虑实用程序类。想想这些方法是否真正属于那里,或者是否有更多的OO方式。
另请参阅此question以及Jon Skeet的回答。
答案 1 :(得分:6)
主要优点是它使您的设计意图更加清晰,并强制执行这些意图。例如,你不能从静态类继承(即专门化它),你不能创建它的实例(它实际上是一个单例)。这些都是实用程序类的设计意图。
但是,应谨慎使用静态类和方法,因为它很难改变程序的行为。静态类和方法是非常具体的,不能(轻松)替换,如果您使用接口和构造函数注入的情况。然而,静态类和成员可能很有用,但很少。过度使用静态技术会降低您的软件的灵活性,并且更难以测试。
答案 2 :(得分:1)
是的,你应该把它变成静态的。使其静态可防止它被实例化。它主要用于告诉使用该类的人,它只包含静态方法,这有助于提高可读性。
答案 3 :(得分:1)
只有该静态类不能包含非静态成员,因此可以防止您意外添加它们。同样如Ray的回答中所提到的,它将使您的代码更清晰。